вторник, 20 августа 2013 г.

Настройка Windows AD для смены пароля через Access Manager

Этот пост описывает настройку Active Directory для аутентификации пользователя и смены его пароля средствами OracleAccess Manager 11gR2. Дополнительных настроек ovd, описанных в этом посте, делать не нужно.
Оглавление:

Установка Access Manager 11gR2.
Установка  Oracle Virtual Directory
Настройка Virtual Directory
Настройка Active Directory 
Настройка Access Manager


1. Для хранения ob-атрибутов в АД необходимо расширить её схему. Ldif-файл для расширения схемы входит в дистрибутив AccessManager 11gR2. Его можно найти здесь:
$MIDDLEWARE_HOME/Oracle_IDM1/oam/server/pswdservice/ldif
 В файле много лишних спецсимволов, из-за которых импорт проходит с ошибкой. Под катом отредактированный файл.
 На контроллере необходимо выполнить:
ldifde -i -f "c:\ora\AD_PWDPersonSchema.ldif" –v

2. Дополнительное редактирование схемы.
Для редактирования схемы можно использовать оснастку windows. По умолчанию она не включена. Чтобы ей воспользоваться, надо зарегистрировать библиотеку командой, выполненной в консоли "as Administrator"
regsvr32 schmmgmt.dll
После этого станет доступна оснастка  ActiveDirectory Shema


В этом примере я редактирую класс person, который есть у каждого пользователя.
Импортированные из ldiff-файла классы необходимо добавить в Auxiliary-классы person

и в возможных superior-aх этих классов указать класс person
3. Создание ACL для ob-атрибутовПользователям необходимо дать права на редактирования добавленных атрибутов.
Это можно сделать из оснастки Users And Computers, включив Advanced  Features View

В этом примере создаются ACL на объект сn=users, dn=wcc, dn=local. Доступ даётся для группы SELF. Таким образом пользователи будут иметь возможность менять только свои атрибуты.


Теперь можно сменить значение всех ob-атрибутов через LDAP браузер




среда, 7 августа 2013 г.

JPS-01016: A password credential expected after upgradeOPSS()

На одной из инсталляций после ручного выполнения команды upgradeOPSS() в логах AdminServer-а появляются ошибки (полный текст под катом):

A password credential is expected; instead found null for alias BOOTSTRAP_JPS and key bootstrap_sO8uNRI9l8k4f8ZuBwsz+PME/qI=
JPS-00071: Ldap bootstrap credential retrieval failed
<Critical> <WebLogicServer> <BEA-000386> <Server subsystem failed. Reason: weblogic.security.SecurityInitializationException:

Текущие настройки сервера:
1. Credentian Store Provider  - база данных


2. Текущее содержимое bootstrap/cwallet.sso
/opt/oracle/middleware/oracle_common/bin/orapki wallet display -wallet cwallet.sso
Oracle PKI Tool : Version 11.1.1.7.0
Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
Requested Certificates:
User Certificates:
Oracle Secret Store entries:
BOOTSTRAP_JPS@#3#@bootstrap_E9Tyfa0er5oeWvzaKnpyyKmg0cA=
fks@#3#@current.key
fks@#3#@master.key.0
fks@#3#@master.key.0.base64
IntegrityChecker@#3#@kss
Trusted Certificates:
Subject:        OU=Class 2 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
Subject:        OU=Class 3 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
Subject:        CN=GTE CyberTrust Global Root,OU=GTE CyberTrust Solutions\, Inc.,O=GTE Corporation,C=US
Subject:        OU=Class 1 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
полный текст команды
upgradeOpss(jpsConfig='/opt/oracle/middleware/user_projects/domains/demo_domain/config/fmwconfig/jps-config.xml',jaznData='/opt/oracle/middleware/oracle_common/modules/oracle.jps_11.1.1/domain_config/system-jazn-data.xml',jdbcDriver="oracle.jdbc.driver.OracleDriver",url="jdbc:oracle:thin:@oraclehost:1521:orcldb",user="DEV_OPSS", password="Welcome")
Команда завершается успешно, но в файле jps-config.xml не верно указан ключ к аутентификационным данным для БД (BOOTSTRAP_JPS). Если исправить их на верные (взятые из вывода orapki, сервер стартует успешно.
<propertySet name="props.db.1">
            <property name="oracle.security.jps.farm.name" value="cn=ecmdev_domain"/>
            <property name="server.type" value="DB_ORACLE"/>
            <property name="oracle.security.jps.ldap.root.name" value="cn=SecurityStore"/>
            <property name="datasource.jndi.name" value="jdbc/OPSS_DS"/>
            <property name="jdbc.url" value="
jdbc:oracle:thin:@oraclehost:1521:orcldb"/>
            <property name="bootstrap.security.principal.key"value="bootstrap_E9Tyfa0er5oeWvpyyKmddffasaA="/>
            <property name="oracle.security.jps.db.useDSAdminMapKey" value="true"/>
            <property name="bootstrap.security.principal.map" value="BOOTSTRAP_JPS"/>
            <property name="jdbc.driver" value="oracle.jdbc.driver.OracleDriver"/>
</propertySet>


пятница, 12 июля 2013 г.

Настройка join-адаптера для ActiveDirectory и Database

Этот пост описывает настройку join -адаптера, который будет использоваться для аутентификации пользователя и смены его пароля средствами OracleAccess Manager 11gR2
Оглавление:
Установка Access Manager 11gR2.
Установка  Oracle Virtual Directory
Настройка Virtual Directory
Настройка Active Directory 
Настройка Access Manager



В качестве LDAP каталога для хранения учётных записей пользователей в текущей задаче используется ActiveDirectory. Использование возможности смены пароля пользователя средствами OAM подразумевает расширение схемы LDAP-каталога. В этом примере не подразумевается модификация каталога AD. Для хранения дополнительных атрибутов пользователей в этом примере используется база данных.

1. Импорт схемы 

Для дальнейшей настройки необходимо расширить стандартную схему OVD, добавив туда необходимые атрибуты и классы. В дистрибутив OAM 11gR2 входит комплект ldif- файлов, позволяющий расширить распространённые LDAP-каталоги. Они находятся здесь:
 $MIDDLEWARE_HOME/Oracle_IDM1/oam/server/pswdservice/ldif
Импорт схемы
ldapadd -D "cn=orcladmin" -w Welcome1 -h $HOSTNAME -p 6501 -x -f $MW_HOME/Oracle_IDM1/oam/server/pswdservice/ldif/OVD_PWDPersonSchema.ldif

 2. Настройка адаптера к Active Directory.

Создание адаптера.


Тип адаптера
Настройки адаптера. В этом примере используется пользователь Administrator.
  Список плагинов. Плагин ActiveDirectory Password обязателен.

3. Создание адаптера к БД.


 Для хранения этих атрибутов в текущей задаче необходимо добавить в БД таблицу и замапить её поля в соответствующем БД-адаптере.
  CREATE TABLE "OVD_OB_PASSWORD"
   ("OBPASSWORDCREATIONDATE" VARCHAR2(100 BYTE),
    "OBPASSWORDHISTORY" VARCHAR2(100 BYTE),
    "OBPASSWORDCHANGEFLAG" VARCHAR2(100 BYTE),
    "OBPASSWORDEXPIRYDATE" VARCHAR2(100 BYTE),
    "OBLOCKOUTTIME" VARCHAR2(100 BYTE),
    "OBLOGINTRYCOUNT" NUMBER,
    "OBLASTSUCCESSFULLOGINTIME" VARCHAR2(100 BYTE),
    "OBLASTFAILEDLOGINTIME" VARCHAR2(100 BYTE),
    "CN" VARCHAR2(100 BYTE),
    "OBUSERACCOUNTCONTROL" VARCHAR2(100 BYTE),
    "OBANSWEREDCHALLENGES" VARCHAR2(100 BYTE),
    "OBYETTOBEANSWEREDCHALLENGE" VARCHAR2(100 BYTE),
    "OBFIRSTLOGIN" VARCHAR2(100 BYTE),
    "OBLASTLOGINATTEMPTDATE" VARCHAR2(100 BYTE),
    "OBLASTRESPONSEATTEMPTDATE" VARCHAR2(100 BYTE),
    "OBPASSWORDEXPMAIL" VARCHAR2(100 BYTE),
    "OBRESPONSETIMEOUT" VARCHAR2(100 BYTE),
    "OBRESPONSETRIES" VARCHAR2(100 BYTE)
   )
Создание адаптера
На следующем шаге после ввода данных для соединения с БД необходимо выбрать только что созданную таблицу и замапить её поля на LDAP атрибуты. В документации есть некоторые ошибки. При мапинге лучше пользоваться предлагаемыми подсказками, а не копировать их со станицы документации.
oblastloginattemptdate
oblockouttime
oblastresponseattemptdate
obLoginTryCount
obresponsetries
obAnsweredChallenges
obpasswordexpirydate
obpasswordexpmail
obLastSuccessfulLoginTime
obresponsetimeout
obPasswordCreationDate
obYetToBeAnsweredChallenge
obPasswordChangeFlag
obPasswordHistory
obuseraccountcontrol
oblastsuccessfullogin
oblastfailedlogin
obfirstlogin
obpasswordcreationdate
obLockoutTime
obLastFailedLoginTime

В обоих адаптерах необходимо настроить роутинг. В адаптере Active Directory надо запретить хранение ob-атрибутов. И явно разрешить хранение атрибута unicodePWD.



В адаптере БД хранение ob-атрибутов надо разрешить и запретить хранение unicodePWD.


Если этого не сделать, согин и смена пароля пользователя будут завершаться с ошибкой

[2013-08-20T14:34:32.815+04:00] [oam_server1] [ERROR] [OAMSSA-20084] [oracle.oam.user.identity.provider] [tid: [ACTIVE].ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: ] [ecid: 004t5uQ0IOMFS8G6yzJb6G0007G70000bV,0:2] [APP: oam_server#11.1.2.0.0] [URI: /oam/server/auth_cred_submit] User password change failed for user: LALALA, idstore OVD with exception : oracle.security.idm.OperationFailureException: javax.naming.NamingException: [LDAP: error code 80 - [[
modifycn=lalalal,dc=ruDBLDAP Error 16 : LDAP Error 16 : Attribute unicodePwd is not present in the entry.[unicodePwd]]; remaining name 'cn=lalala,dc=ru'

4. Создание join-адаптера.

 Использование join-адаптера позволяет объединить в одной возвращаемой пользователю записи атрибуты из LDAP-каталога и атрибуты из таблицы БД.
Тип адаптера.

Настройки Join-адаптера. Primary и Bind адаптеры необходимо выбрать LDAPDemo

Плагины в join-адаптере. Плагин ActiveDirectory Password обязателен.

В примере объединение происходит по столбцу\атрибуту "CN" 
5. Настройка разрешений.
Необходимо создать новую Access controll point на закладке Security. В этом примере область её действия вся ветка Users в LDAP-каталоге. В качестве  DN необходимо ввести имя в Join-адаптере.
В этом примере грант выдан на все действия

 Можно дополнительно ограничить пользователей, на которых распространяется действие записи.
 После этих настроек в таблицу БД можно добавить запись какого-нибудь пользователя из ActiveDirectory и увидеть его атрибуты через join адаптер. Заполнять все БД атрибуты не обязательно. Необходим только тот, по которому происходит объединение.


Исследованием этого вопроса я занимался совместно с коллегой, Петром Дегтярёвым.









вторник, 7 мая 2013 г.

ObSSOCookie Parser

Маленький класс, который показывает содержимое ObSSOCookie.
На вход подаётся шифрованная кука. 

Prereq: Oracle Access Manager Access SDK (11.1.1.7.0)
SDK Java API Reference: http://docs.oracle.com/cd/E23943_01/apirefs.1111/e22472/toc.htm

Для компиляции и запуска необходимо добавить в  переменную CLASSPATH путь к архиву oamasdk-api.jar.
export CLASSPATH=/opt/oracle/middleware/webgate/access/oamasdk-api.jar:.





среда, 24 апреля 2013 г.

WebGate 10g Installation


Дистрибутив
http://www.oracle.com/technetwork/middleware/ias/downloads/101401-099957.html

После распаковки получаем 3 исполняемых файла для различных конфигураций.

Запуск установки
Oracle_Access_Manager10_1_4_3_0_CR1_linux64_APACHE22_WebGate -gui

Лог установка пишет в файл
/tmp/WebGate.log

Инсталятор спросит про пользователя и группу, под которыми планируется запускать web-сервер. В поём случае это apache.