この記事では、Liferay Digital Experience Platform (DXP) によるLDAP導入の概要を説明します。認証、ユーザーインポート/エクスポート、設定、アップグレード時の留意事項、Liferay Portalのこれまでのバージョンからの変更に関する内容は、業務においてLiferay DXPでLDAPを正しく導入するのに役立つでしょう。
目次:
- LDAP認証
- LDAPユーザーインポート
- LDAPユーザーエクスポート
- 設定
- アップグレード
- 開発の注意事項
詳細
はじめに
ベストプラクティスとして、Liferay DXPの最新Fix Packをダウンロードしてください。
Liferay Portalは、LDAPの3段階の主要な導入手順を提供します:
- LDAP認証
- LDAPユーザーインポート
- LDAPユーザーエクスポート
これらのサービスはportal-ldapモジュール (com.liferay.portal.ldap.jar) にカプセル化されています。
LDAP認証
LDAP認証は、ポータル内の他のSSO実装 (トークン、CAS、OpenSSOなど) とは性質の異なるものです。 LDAP認証は、下位レベルのLiferayの認証コード概念を使用します。 AuthPipeline 認証コードがLiferayに導入され、ポータル独自の認証プロセスの一部として使用されます。 他のSSO実装は、バイパス機構 (AutoLogin) を使用し、ポータルの認証プロセスを回避します。
実装
内部に含まれる実装は、認証パイプラインに登録された認証コードcom.liferay.portal.ldap.internal.authenticator.LDAPAuth. LDAPAuth の構成要素です。
設定は、以下の3つの設定プロパティを通じて行われます:
- LDAPAuthConfiguration
- LDAPServerConfiguration
- SystemLDAPConfiguration
正しく認証されれば、認証されたユーザーはLDAPからLiferayユーザーストアへインポートされます。
LDAPユーザーインポート
Liferayには共通のユーザーインポートサービスがあり、あらゆる外部システムからLiferayのユーザーストアにユーザーをインポートします。 LDAPユーザーインポートは、このサービスをLDAP独自に実装したものです。
LDAPからユーザーがインポートされるのは、以下の2つ場合です。
- LDAP認証が有効なとき、ポータルへの認証に成功したユーザーは、自動的にLiferayのユーザーストアにインポートされます。
- LDAP日時指定インポートが有効な場合 (LDAPImportConfiguration.enabled)、設定した一定の期間 (LDAPImportConfiguration.importInterval) で、ユーザーはLDAPからLiferayのユーザーストアにインポートされます。
実装
com.liferay.portal.ldap.internal.exportimport.LDAPUserImportImpl はサービスの実装の大部分を提供します。 LDAPと通信し、ユーザーとグループの情報を取得します。LDAPUserImportImpl はLDAPToPortalConverterを使用し、LDAPのオブジェクトと属性をLiferayのオブジェクト (ユーザー、連絡先、グループ、ロール) に変換します。
LDAPUserImportImplは以下を通じて設定されます。
- LDAPImportConfiguration
- LDAPServerConfiguration
LDAPユーザーエクスポート
Liferayには、ユーザーインポートサービスを補完する共通のユーザーエクスポートサービスがあります。 このユーザーエクスポートサービスには、Liferayのユーザーストアから外部システムへユーザーをエクスポートする機能があります。 LDAPユーザーエクスポートは、本サービスのLDAP特有の実装です。
エクスポート対象となるユーザーにはいくつか条件があります:
- ユーザーがLiferayのユーザーストアに追加されたとき
- Liferayのユーザーストアでユーザーのプロフィールが変更されたとき
- ユーザーがユーザーグループに追加されたとき
- ユーザーがユーザーグループから除外されたとき
- ユーザーがロールに追加されたとき
- ユーザーがロールから除外されたとき
実装
com.liferay.portal.ldap.internal.exportimport.LDAPUserExportImpl は本サービスの実装の大部分を提供します。 LDAPと通信してユーザーのプロフィール情報を保管します。 LDAPUserExportImpl はPortalToLDAPConverterを使用してLiferayのオブジェクト (ユーザー、連絡先) をLDAPのオブジェクトに変換します。
LDAPExportUserImpl は以下を通じて設定されます。
- LDAPExportConfiguration
- LDAPServerConfiguration
エクスポートを起動するために、実装はModelListenersを使用します:
- ユーザーと連絡先情報が変わったときにユーザー情報をエクスポート:
- com.liferay.portal.ldap.internal.exportimport.model.listener.UserModelListener
- com.liferay.portal.ldap.internal.exportimport.model.listener.ContactModelListener
- ユーザーグループのユーザーに関するメンバーシップが変わったときにユーザー情報をエクスポート:
- com.liferay.portal.ldap.internal.exportimport.model.listener.UserGroupModelListener
- ロールのユーザーに関するメンバーシップが変わったときにユーザー情報をエクスポート:
- com.liferay.portal.ldap.internal.exportimport.model.listener.UserModelListener
設定
Liferay DXPより前は、LDAPに関する設定が数か所に存在していました。
- portal.properties
- データベース
特定の値はPortalのポータル設定のユーザーインターフェース (認証 -> LDAP) から設定可能でした。これは、多くの一貫性のない動作につながり、どの値がどこで変更されるべきかを解読する必要性が生じてしまいました。
DXP以降、その混乱はなくなりました。 全てのLDAP設定はConfigurationAdminを使用して行われます。具体的に以下の設定があります:
- LDAPAuthConfiguration
- LDAPAuth特有の設定
- 各ポータルインスタンス (companyId) に1つの設定が可能です
- LDAPExportConfiguration
-
- LDAPUserExportImpl 特有の設定
- 各ポータルインスタンス (companyId) に1つの設定が可能です
- LDAPImportConfiguration
-
- LDAPUserImporttImpl 特有の設定
- 各ポータルインスタンス (companyId) に1つの設定が可能です
- LDAPServerConfiguration
-
- 個別のldapサーバー設定の設定。
- 各ポータルインスタンス (companyId) に、 ldapServerId.によって識別される複数の設定が可能です
- SystemLDAPConfiguration
- 範囲のサイズなど、一般的なLDAPの設定プロパティ
- 各ポータルインスタンス (companyId) に1つの設定が可能です
様々なLDAPの構成要素によって使用される設定がいくつかあり、具体的にはportal.propertiesで設定できます。
- DefaultLDAPToPortalConverter
- user.screen.name.always.autogenerate
- user.email.address.required
- DefaultPortalLDAP
- company.security.auth.type
- user.screen.name.always.autogenerate
- LDAPAuth
- auth.pipeline.enable.liferay.check
- LDAPUserImporterImpl
- company.security.auth.type
これらのプロパティは、将来的にConfigurationAdminを使用するものへ変換される可能性があります。
LDAP認証設定
特定のプロパティに関する注意:
- method (“バインド” または “パスワード比較”)
- LDAPの認証方法について "バインド" または "パスワード比較" を設定してください。 バインドはほとんどのベンダーに推奨されているので、暗号化戦略に悩む必要がありません。
- passwordEncryptionAlgorithm
- パスワード暗号化を設定し、インポート中にはパスワード比較を、エクスポート中にはパスワード暗号化を使用しましょう。インポート中のパスワード比較は、プロパティの "方法" がパスワード比較に設定されている時にのみ使用されます。暗号化が既定値のNONEになっている場合、パスワードはプレーンテキストとして認識されます。SHA-512アルゴリズムは現在サポートされていません。
- passwordPolicyEnabled
- これをtrueに設定することで、ポータルのパスワードポリシーの代わりにLDAPのパスワードポリシーを使用できます。 trueに設定した場合、ポータルが生成したパスワードがLDAPのポリシーを満たさない可能性があります。これらのパスワード生成時の設定に関する詳細については、portal.propertiesの "passwords.regexptoolkit.*" プロパティをご参照ください。
LDAPエクスポート設定
注意: LDAPExportConfiguration がtrueに設定されない限り、LDAPAuthConfiguration.enabled の値は一切使用されません。
LDAPインポート設定
注意: LDAPImportConfiguration がtrueに設定されない限り、LDAPAuthConfiguration.enabledの値は一切使用されません。
LDAPサーバー設定
特定のプロパティに関する注意:
- authSearchFilter
- Active Directoryは、ユーザーアカウントに関する情報を UserAccountControl 属性内に一連のビットフィールドとして保管します。 無効化されたアカウントがポータルにログインするのを防ぎたい場合、以下のような検索フィルターを使用する必要があります: (&(objectclass=person)(userprincipalname=@email_address@)(!(UserAccountControl:1.2.840.113556.1.4.803:=2)))
次のリンクを参照してください:
https://support.microsoft.com/en-us/kb/305144
http://support.microsoft.com/?kbid=269181
システムLDAP設定
特定のプロパティに関する注意:
- pageSize
- ディレクトリサーバーのページサイズは、ページングをサポートする数値に設定してください。Microsoft Active Directory Server用の数値は1000以下である必要があります。
- rangeSize
- 各クエリにおける戻り値の数値は、ディレクトリサーバーに関しては範囲検索をサポートする多値属性に設定してください。範囲の大きさは、Windows 2000では1000以下、Windows Server 2003では1500以下である必要があります。
- connectionProperties
- LDAPコネクションプーリングを有効化するには"com.sun.jndi.ldap.connect.pool" をtrueに設定し、以下からJVMスタートアップオプションを通じて追加のJVMシステムプロパティを用意する必要があります:
- java ... -Dcom.sun.jndi.ldap.connect.pool.maxsize=50 -Dcom.sun.jndi.ldap.connect.pool.timeout=10000
次のリンクを参照してください。
http://docs.oracle.com/javase/6/docs/technotes/guides/jndi/jndi-ldap.html#POOL
追加情報
Related Links: