Создаем пользователя с аутнетификацией на уровне ОС и парольной аутентификацией

Источник: all-oracle

Рекомендовано для:
  • Oracle Database 8i
  • Oracle Database 9i R1
  • Oracle Database 9i R2
  • Oracle Database 10g R1
  • Oracle Database 10g R2
  • Oracle Database 11g R1
  • Oracle Database 11g R2
 

В этой статье расскажу о создании пользователя, который аутентифицируется на уровне операционной системы и имеет парольную аутентификацию.

Параметр инициализации REMOTE_OS_AUTHENT предоставляет доверительную модель сетевой аутентификации, пользователи имеющие учетные записи операционной системы могут получать доступ к базе данных. Таким образом вся отвественность аутентификации ложиться на операционную систему, и используется удобный механизм SSO.

Параметр REMOTE_OS_AUTHENT может принимать значения типа BOOLEAN, FALSE - значение по умолчанию, которое может быть изменено командой ALTER SYSTEM. Этот параметр доступен начиная с Oracle версии 7. Начиная с 11g (11.1.0.6) считается устаревшим, и присутствует только для обратной совместимости.

OS_AUTHENT_PREFIX определяет префикс, который Oracle использует для аутентификации пользователей, пытающихся подключиться к серверу. Oracle пристыкоавывает значение этого параметра перед именем пользователя операционной системы и пароля. При запросе подключения Oracle сравнивает имя пользователя с префиксом с именем пользователя в базе данных Oracle. По умолчанию значение параметра OPS$, для обратной совместимости с предыдущими версиями. Вы можете задать его значение пустым, таким образом префикс убираетсяЮ и имена операционной системы и Oracle совпадают.

Следующий пример иллюстрирует как можно подключиться используя одну учетную запись с паролем и без пароля.

Важно: Этот пример носит учебный характер, настоятельно не рекоммендуется повторять подобное на промышленных серверах.

Выясняем значения параметров по умолчанию:

SQL> show parameter os_authent
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
os_authent_prefix                    STRING      OPS$
remote_os_authent                    BOOLEAN     FALSE
SQL>

REMOTE_OS_AUTHENT может быть выставлено в TRUE командой ALTER SYSTEM, но не вступит в силу до тех пор, пока экземпляр не будет перезапущен.

SQL> ALTER SYSTEM SET REMOTE_OS_AUTHENT=TRUE SCOPE=SPFILE;
System altered.

Проверяем:

SQL> show parameter os_authent
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
os_authent_prefix                    STRING      OPS$
remote_os_authent                    BOOLEAN     TRUE
SQL>

Теперь создадим пользователя (схему) используя обычный метод, т.е. identified by вместо identified externally.

SQL> CREATE USER OPS$ALL_ORACLE IDENTIFIED BY MYPASSWORD;
User created.
SQL> GRANT CONNECT TO OPS$ALL_ORACLE;
Grant succeeded

Подключаемся как пользователь операционной системы, вам будет позволено подключиться к базе данных без пароля, используя аутентификацию операционной системы.

$ sqlplus /@test
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Jan 12 10:23:00 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to:
Oracle Database 10g Release 10.2.0.1.0 - 64bit Production
SQL>

Проверяем текущего пользователя:

SQL> show user
USER is "OPS$ALL_ORACLE"

Теперь проверяем подключение с паролем:

SQL> connect ops$all_oracle/mypassword@test
Connected.
SQL> show user
USER is "OPS$ALL_ORACLE"

Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=29900