5.16.4 Active Directoryを使用する場合の設定
LDAPディレクトリサーバとしてActive Directoryを使用する場合の設定方法について説明します。
統合ユーザ管理フレームワークのライブラリを使用して,ユーザ情報リポジトリへのユーザの登録,ユーザ情報の更新(ユーザのパスワード変更を含む)を行う場合,Active Directory固有の環境設定,およびSSLを使用して接続するための証明書の登録が必要です。
LDAPディレクトリサーバとしてActive Directoryを使用する場合の設定項目を,次の表に示します。なお,使用するユーザ認証方式によって設定する項目が異なります。
設定項目 |
パスワード認証 |
パスワード変更およびユーザの追加・変更 |
クライアント認証(X509証明書) |
|
---|---|---|---|---|
jaas.confの設定 |
必要なログインモジュールの指定 |
○ |
○ |
○ |
ログインモジュールのオプションの指定 |
△ |
○ |
− |
|
ua.confの設定 |
ユーザ識別属性の指定 |
○ |
○ |
○ |
DNでユーザIDとして使用する属性名の指定 |
− |
− |
○ |
|
パスワード属性の指定 |
○ |
○ |
− |
|
LDAPディレクトリサーバの種類の指定 |
○ |
○ |
− |
|
日本語など2バイト文字を含むDNの変換 |
△ |
△ |
△ |
|
URLプロトコルの変更 |
△ |
○ |
△ |
|
SSL接続の設定 |
△ |
○ |
△ |
Active Directory固有の環境設定の方法,およびSSLを使用して接続するための証明書の登録を次に示します。
- ポイント
-
Active Directoryで管理するユーザは,ほかのLDAPディレクトリサーバで管理するユーザと,オブジェクトクラス,属性が大きく異なります。統合ユーザ管理フレームワークのライブラリを使用する場合には,オブジェクトクラスに「user」を使用します,その「user」を作成する場合には,「cn」,「unicodePwd」,「sAMAccountName」,および「userAccountControl」の属性を指定します。
「sAMAccountName」には,セキュリティアカウントマネージャ(SAM)のアカウント名を指定します。なお,通常,アカウント名はユーザIDと同じ値を指定します。
「userAccountControl」には,ユーザアカウントのプロパティフラグを指定します。一般ユーザのユーザエントリを作成する場合は「512」を指定します。ただし,Active Directoryがインストールされているサーバのセキュリティポリシーで,パスワードの長さが1文字以上に設定されている場合,「userAccountControl」に「512」を指定すると,ユーザを作成できません。この場合は,次のどちらかの対処をして,ユーザエントリを作成してください。
-
セキュリティポリシーのパスワードの長さを0文字以上に変更して,「userAccountControl」に「512」を指定する。
-
セキュリティポリシーのパスワードの長さの設定を変更しないで,「userAccountControl」に「544」を指定する。
-
(1) jaas.confの設定
jaas.confに設定する内容について説明します。
(a) ログインモジュールの設定
認証方式にパスワード認証を使用する場合はWebPasswordLDAPLoginModule,クライアント証明を使用する場合はWebCertificateLoginModuleを設定します。
(b) ログインモジュールのオプションの指定(パスワード認証を使用する場合)
WebPasswordLDAPLoginModuleのオプションに「ldap.w」を設定します。なお,SSOを使用する場合は「sso.ldap.w」を設定します。
(2) ua.confの設定
ua.confに設定する内容について説明します。
(a) ユーザ識別属性の指定
ユーザ識別属性に,「cn」(フルネームに該当)または「sAMAccountName」を設定します。
設定例を次に示します。
- (例1)「cn」をユーザ識別属性に使用する場合
com.cosminexus.admin.auth.ldap.attr.userid.0=cn
- (例2)「sAMAccountName」をユーザ識別属性に使用する場合
com.cosminexus.admin.auth.ldap.attr.userid.0=sAMAccountName
ユーザ識別属性を「sAMAccountName」に設定した場合リポジトリのユーザエントリ(RDN)の検索が必要となります。検索に必要なプロパティとその設定例を次に示します。
- (例)
java.naming.security.principal.0=cn=Administrator,cn=Users,dc=cosminexus,dc=com java.naming.security.credentials.0=adminpassword com.cosminexus.admin.auth.ldap.search.userrdn.0=true com.cosminexus.admin.auth.ldap.search.scope.0=onelevel
なお,「sAMAccountName」をユーザ識別属性に使用する場合は,LdapUserDataManagerクラスのaddUserData(String uid, UserData userData)メソッドは使用できません。ユーザを追加する場合は addUserData(String uid, UserData userData, String name, String value)メソッドを使用してください。また,属性名の引数(String name)には,「cn」を設定してください。
(b) DNでユーザIDとして使用する属性名の指定(クライアント証明書を使用する場合)
クライアント証明書を使用する場合は,クライアント証明書に格納されているDN(クライアント証明書の被認証者識別名)を分解したあと,ユーザIDとして使用する属性名を設定します。設定例を次に示します。
- (例)
com.cosminexus.admin.auth.ldap.certificate.attr.userid.0=cn
ここで指定する属性名は,「(a) ユーザ識別属性の指定」で指定するユーザ識別属性とは異なります。
(c) パスワード属性の指定(パスワード認証を使用する場合)
パスワード属性に「unicodePwd」を設定します。設定例を次に示します。
- (例)
com.cosminexus.admin.auth.ldap.attr.password.0=unicodePwd
(d) LDAPディレクトリサーバの種類の指定(パスワード認証を使用する場合)
接続先のLDAPディレクトリサーバの種類に「AD」を指定した行を追加します。LDAP設定番号が「0」の場合の設定例を次に示します。
- (例)
com.cosminexus.admin.auth.ldap.directory.kind.0=AD
(e) URLプロトコルの変更
接続先のLDAPディレクトリサーバのURLのプロトコルに「ldaps」を設定します。設定例を次に示します。なお,ポート番号は省略できます。
- (例)
-
変更前:java.naming.provider.url.0=ldap://localhost:389
変更後:java.naming.provider.url.0=ldaps://localhost.example.com:636
(f) URLホスト名の注意事項
Active DirectoryのドメインコントローラのFQDN(完全修飾ドメイン名)を指定してください。そのとき,hostsファイルなどでホスト名を解決できるようにする必要があります。
(3) SSL接続の設定
J2EEサーバとActive Directory間の通信でSSLを使用するための証明書を登録します。証明書の登録方法を次に示します。
-
作成したデジタル証明書を,Active Directoryがインストールされているサーバ(LDAPサーバ)に登録します。
デジタル証明書の作成,登録方法については,Active Directoryのドキュメントを参照してください。
-
認証局(CA)の証明書を,J2EEサーバに登録します。
認証局の証明書のJ2EEサーバへの登録は,Developer's Kit for Javaに付属するkeytoolを使用して実行できます。keytoolの詳細については,Java 2 SDK, Standard Editionのドキュメントを参照してください。keytoolの実行例を次に示します。なお,表記の都合上,複数行にわたっていますが,実際は一行で記述します。
Windowsの場合
keytool -import -alias cakey -file C:\temp\cacer.cer -trustcacerts -keystore "<Application Serverのインストールディレクトリ>\jdk\lib\security\cacerts"
UNIXの場合
/opt/Cosminexus/jdk/bin/keytool -import -alias cakey -file /tmp/cacer.cer -trustcacerts -keystore /opt/Cosminexus/jdk/lib/security/cacerts
なお,keytoolで証明書を登録する際にJ2EEサーバを起動していた場合は,J2EEサーバを再起動してください。
(4) 注意事項
注意事項を次に示します。
-
ua.confでユーザのパスワードを表す属性値として「unicodePwd」を指定した場合,パスワード形式オプション「password.encrypt」および「password.encrypt.ex」の設定は無効になります。
-
Active Directoryでは,既存ユーザエントリのオブジェクトクラスの変更はサポートしていません。ua.confに「com.cosminexus.admin.auth.ldap.directory.kind.0=AD」を指定した場合,LdapUserDataManagerクラスのコンストラクタで新規にオブジェクトを追加したあとで,既存のユーザエントリを更新しても,ユーザエントリ作成時のオブジェクトクラスが適用されます。