2015年1月2日金曜日

OpenDJへのプロビィジョニング

連携先(プロビ先)としてOpenDJ(LDAP)を採用する。
 ★ローカル(LDAP⇒MySQL)、リモート(LDAP)となる。

https://forgerock.org/downloads/opendj-archive/よりOpenDJ-2.4.6.zipをダウンロードして、解凍する。

●ローカル
# cd /usr/local
# unzip OpenDJ-2.4.6.zip
# cd OpenDJ-2.4.6
# ./setup -i -b "dc=openam,dc=net" -D "cn=Directory Manager" -w ampassword -q -Z 1636 -h chef-idm.openam.net -p 1389 --adminConnectorPort 4444 -x 1689 --ldifFile /tmp/Example.ldif  --generateSelfSignedCertificate
================== ここから ==================
OpenDJ 2.4.6
セットアッププログラムが初期化を実行しています。お待ちください...
構成の完了時にサーバーを起動しますか ? (yes / no) [yes]: 

設定の概要
=============
LDAP リスナーポート:   1389
管理コネクタポート:      4444
JMX リスナーポート:    1689
LDAP セキュアアクセス:  StartTLS を有効にする
                LDAP ポート 1636 で SSL を有効にする
                自己署名付き証明書の新規作成
ルートユーザー DN:     cn=Directory Manager
ディレクトリデータ:      新しいベース DN dc=openam,dc=net を作成します。
                ベース DN データ: LDIF ファイルからデータをインポートする (/tmp/Example.ldif)
構成の完了時にサーバーを起動します

何を実行しますか ?
    1)  上記のパラメータを使ってサーバーを設定する
    2)  設定パラメータを再度指定する
    3)  等価の非対話型コマンド行を印刷します
    4)  取り消して終了する
選択肢 [1]: 
この操作の詳細なログについては /tmp/opends-setup-7995461558930754188.log を参照してください。
ディレクトリサーバーを構成しています ..... 完了。
証明書を構成しています ..... 完了。
LDIF ファイル /tmp/Example.ldif をインポートしています ........ 完了。
ディレクトリサーバーを起動しています ........ 完了。
基本的なサーバー構成状態および構成を表示する場合は、/usr/local/OpenDJ-2.4.6/bin/status を起動できます
================== ここまで ==================

LDAP検索できることを確認する。
# /usr/local/OpenDJ-2.4.6/bin/ldapsearch -D "cn=Directory Manager" -w ampassword -p 1389 -b "dc=openam,dc=net" "objectclass=*"
================== ここから ==================
dn: dc=openam,dc=net
dc: openam
objectClass: domain
objectClass: top

dn: ou=People,dc=openam,dc=net
description: people
ou: people
objectClass: organizationalunit
objectClass: top

dn: uid=jdoe,ou=People,dc=openam,dc=net
objectClass: person
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: top
givenName: John
description: Created for OpenIDM
uid: jdoe
cn: John Doe
telephoneNumber: 1-415-599-1100
sn: Doe
userPassword: {SSHA}/W6wcrfPRNciGRZCNSjF0KJgj/zJRBzbakOyqQ==
mail: jdoe@openam.net
dn: uid=bjensen,ou=People,dc=openam,dc=net
objectClass: person
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: top
givenName: Barbara
description: Created for OpenIDM
uid: bjensen
cn: Babara Jensen
telephoneNumber: 1-360-229-7105
sn: Jensen
userPassword: {SSHA}WIMtSdCFrwe6mIC+f6nvWa4h77gZaUC6PVYrVQ==
mail: bjensen@openam.net

dn: ou=Groups,dc=openam,dc=net
ou: Groups
objectClass: organizationalUnit
objectClass: top

dn: cn=openidm,ou=Groups,dc=openam,dc=net
uniqueMember: uid=jdoe,ou=People,dc=openam,dc=net
cn: openidm
objectClass: groupOfUniqueNames
objectClass: top

dn: cn=openidm2,ou=Groups,dc=openam,dc=net
uniqueMember: uid=bjensen,ou=People,dc=openam,dc=net
cn: openidm2
objectClass: groupOfUniqueNames
objectClass: top
================== ここまで ==================

OpenDJを自動起動にする。
# cd /usr/local/OpenDJ-2.4.6/bin
# ./create-rc-script -f /etc/init.d/opendj

●リモート
# cd /usr/local
# unzip OpenDJ-2.4.6.zip
# cd OpenDJ-2.4.6
# ./setup -i -b "dc=openam,dc=net" -D "cn=Directory Manager" -w ampassword -q -Z 1636 -h chef-prov-dj.openam.net -p 1389 --adminConnectorPort 4444 -x 1689 -a --generateSelfSignedCertificate
================== ここから ==================
OpenDJ 2.4.6
セットアッププログラムが初期化を実行しています。お待ちください...
構成の完了時にサーバーを起動しますか ? (yes / no) [yes]: 

設定の概要
=============
LDAP リスナーポート:   1389
管理コネクタポート:      4444
JMX リスナーポート:    1689
LDAP セキュアアクセス:  StartTLS を有効にする
                LDAP ポート 1636 で SSL を有効にする
                自己署名付き証明書の新規作成
ルートユーザー DN:     cn=Directory Manager
ディレクトリデータ:      新しいベース DN dc=openam,dc=net を作成します。
                ベース DN データ: ベースエントリのみを作成する (dc=openam,dc=net)
構成の完了時にサーバーを起動します

何を実行しますか ?
    1)  上記のパラメータを使ってサーバーを設定する
    2)  設定パラメータを再度指定する
    3)  等価の非対話型コマンド行を印刷します
    4)  取り消して終了する
選択肢 [1]: 
この操作の詳細なログについては /tmp/opends-setup-3765952323872147464.log を参照してください。
ディレクトリサーバーを構成しています ..... 完了。
証明書を構成しています ..... 完了。
ベースエントリ dc=openam,dc=net を作成しています ..... 完了。
ディレクトリサーバーを起動しています ........ 完了。
基本的なサーバー構成状態および構成を表示する場合は、/usr/local/OpenDJ-2.4.6/bin/status を起動できます
================== ここまで ==================

LDAP検索できることを確認する。
# /usr/local/OpenDJ-2.4.6/bin/ldapsearch -D "cn=Directory Manager" -w ampassword -p 1389 -b "dc=openam,dc=net" "objectclass=*"
================== ここから ==================
dn: dc=openam,dc=net
dc: openam
objectClass: domain
objectClass: top
================== ここまで ==================

OpenDJを自動起動にする。
# cd /usr/local/OpenDJ-2.4.6/bin
# ./create-rc-script -f /etc/init.d/opendj

●ローカル
# cd /usr/local/openidm/samples/sample2b/conf
# vi provisioner.openicf-ldap.json
※dc=example,dc=comをdc=openam,dc=netへ変更
# vi sync.json
※dc=example,dc=comをdc=openam,dc=netへ変更

 
OpenIDMを起動する。(sample 2b - LDAP Two Way)
# ./startup.sh -p samples/sample2b

次にhttps://chef-idm.openam.net:8443/adminにopenidm-adminでログインし、連携先を設定する。
 
 
※OpenDJのホスト名などを合わせる。

●Resources

●Mapping





OpenIDMのインストール

ForgeRockのサイト(https://forgerock.org/downloads/openidm-builds/)からopenidm-3.2.0-SNAPSHOT.zipをダウンロードして、/usr/local配下で展開する。コンソールからOpenIDMを起動する。
# /usr/local/openidm/startup.sh

http://chef-idm.openam.net:8080/system/console
※admin/admin

https://chef-idm.openam.net:8443/openidmui
※openidm-admin/openidm-admin
    ログイン後に適当にOpenIDM1234に変更




https://chef-idm.openam.net:8443/admin
※openidm-admin/OpenIDM1234

次にローカルリポジトリとしてOrientDB(本番利用非推奨)からMySQL(本番利用推奨)をインストールする。
# wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-5.6.21-1.el7.x86_64.rpm-bundle.tar
# tar -xvf MySQL-5.6.21-1.el6.x86_64.rpm-bundle.tar
# rm -rf /var/lib/mysql
# rpm -Uvh MySQL-shared-compat-5.6.21-1.el6.x86_64.rpm
# rpm -Uvh MySQL-server-5.6.21-1.el6.x86_64.rpm
# rpm -Uvh MySQL-shared-5.6.21-1.el6.x86_64.rpm
# rpm -Uvh MySQL-client-5.6.21-1.el6.x86_64.rpm
# chkconfig mysql on
# chkconfig --list mysql
mysql           0:off 1:off 2:on 3:on 4:on 5:on 6:off
# more /root/.mysql_secret
# The random password set for the root user at Thu Jan  1 12:19:59 2015 (local t
ime): U0K0A15DfLHoiXQZ

# mysql -u root -p
Enter password:  ※上のパスワードを入力
mysql> show databases;
ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
mysql> SET PASSWORD = PASSWORD('OpenIDM1234');
mysql> exit

OpenIDMを停止する。
-> OpenIDM ready
-> shutdown
#

MySQLのJDBCドライバを配備
http://dev.mysql.com/downloads/connector/j/よりmysql-connector-java-5.1.34.tar.gzをダウンロードして、展開する。
# gunzip mysql-connector-java-5.1.34.tar.gz
# cp mysql-connector-java-5.1.34/mysql-connector-java-5.1.34-bin.jar /usr/local/openidm/bundle

OrientDBからMySQLに変更し、OpenIDMのDBを構築
# cd /usr/local/openidm/conf
# rm -f repo.orientdb.json
# cp -p /usr/local/openidm/samples/usecase/db/mysql/repo.jdbc.json /usr/local/openidm/conf
# mysql -u root -p < /usr/local/openidm/db/mysql/scripts/openidm.sql
Enter password:
#

OpenIDMのDBを表示
# mysql -u root -p
Enter password:
mysql> use openidm;
mysql> show tables;
+---------------------------+
| Tables_in_openidm         |
+---------------------------+
| auditaccess               |
| auditactivity             |
| auditrecon                |
| auditsync                 |
| clusterobjectproperties   |
| clusterobjects            |
| configobjectproperties    |
| configobjects             |
| genericobjectproperties   |
| genericobjects            |
| internaluser              |
| links                     |
| managedobjectproperties   |
| managedobjects            |
| objecttypes               |
| schedulerobjectproperties |
| schedulerobjects          |
| security                  |
| securitykeys              |
| uinotification            |
+---------------------------+
20 rows in set (0.00 sec)
mysql> exit

OpenIDMを再起動。
# /usr/local/openidm/startup.sh
org.forgerock.openidm.repo.jdbcがactiveとなっていて、org.forgerock.openidm.repo.orientdbがunsatisfiedとなっていることを確認する。
-> scr list
   Id   State          Name
[  20] [active       ] org.forgerock.openidm.endpoint
[  24] [active       ] org.forgerock.openidm.endpoint
[  23] [active       ] org.forgerock.openidm.endpoint
[  18] [active       ] org.forgerock.openidm.endpoint
[  28] [active       ] org.forgerock.openidm.endpoint
[  27] [active       ] org.forgerock.openidm.endpoint
[  21] [active       ] org.forgerock.openidm.endpoint
[  10] [active       ] org.forgerock.openidm.endpoint
[  25] [active       ] org.forgerock.openidm.endpoint
[  19] [active       ] org.forgerock.openidm.endpoint
[  29] [active       ] org.forgerock.openidm.endpoint
[   1] [active       ] org.forgerock.openidm.config.enhanced
[   6] [active       ] org.forgerock.openidm.http.context
[  39] [active       ] org.forgerock.openidm.info
[  40] [active       ] org.forgerock.openidm.info
[  17] [active       ] org.forgerock.openidm.provisioner.openicf.connectorinfoprovider
[   4] [unsatisfied  ] org.forgerock.openidm.repo.orientdb
[  16] [active       ] org.forgerock.openidm.openicf.syncfailure
[  30] [active       ] org.forgerock.openidm.api-servlet
[  33] [active       ] org.forgerock.openidm.authnfilterbuilder
[   2] [active       ] org.forgerock.openidm.config.enhanced.starter
[   0] [active       ] org.forgerock.openidm.security
[   8] [active       ] org.forgerock.openidm.audit
[  45] [unsatisfied  ] org.forgerock.openidm.schedule
[  11] [active       ] org.forgerock.openidm.servletfilter.registrator
[   3] [active       ] org.forgerock.openidm.repo.jdbc
[  43] [active       ] org.forgerock.openidm.managed
[  15] [unsatisfied  ] org.forgerock.openidm.provisioner.openicf
[  35] [active       ] org.forgerock.openidm.workflow
[  38] [active       ] org.forgerock.openidm.health
[   7] [active       ] org.forgerock.openidm.provisioner
[  13] [active       ] org.forgerock.openidm.internal
[  44] [active       ] org.forgerock.openidm.taskscanner
[  14] [active       ] org.forgerock.openidm.external.rest
[   9] [active       ] org.forgerock.openidm.ui.context
[  26] [active       ] org.forgerock.openidm.ui.context
[  31] [active       ] org.forgerock.openidm.router
[  46] [active       ] org.forgerock.openidm.scheduler
[  32] [unsatisfied  ] org.forgerock.openidm.external.email
[  41] [active       ] org.forgerock.openidm.sync
[  36] [active       ] org.forgerock.openidm.policy
[   5] [active       ] org.forgerock.openidm.cluster
[  37] [active       ] org.forgerock.openidm.script
[  42] [active       ] org.forgerock.openidm.recon
[  12] [active       ] org.forgerock.openidm.servletfilter
[  22] [active       ] org.forgerock.openidm.servletfilter
[  34] [active       ] org.forgerock.openidm.authentication
->

OpenIDMの自動起動を設定する。
# cd /usr/local/openidm/bin
# ./create-openidm-rc.sh
# cp -p openidm /etc/init.d
# ls -l /etc/init.d/openidm
# chkconfig --add openidm
# chkconfig openidm on
# chkconfig --list openidm
openidm         0:off 1:off 2:on 3:on 4:on 5:on 6:off