OpenDJ LDAP統合リファレンス
このトピックでは、OpenDJ Lightweight Directory Access Protocol(LDAP)統合に固有の参考情報を提供します。Okta LDAP Agentをインストールする際、OpenDJディレクトリをOktaと統合するためにこの情報が必要になります。「Okta LDAP Agentのインストール」を参照してください。
推奨バージョン
OpenDJ Community Edition 2.6.4
既知の問題
-
自分のパスワードのリセットを要求し、管理者がパスワードをリセットした後、そのパスワードを変更する必要があるユーザーは、Okta End-User Dashboardにアクセスするために新しいパスワードを2回指定する必要がある。
-
プロビジョニング設定で[Do nothing(何もしない)]と表示されている場合、ユーザーが非アクティブ化されてもOktaではアクティブなままになっている。単一のソースがユーザープロファイル属性を提供する場合、非アクティブ化されたユーザーはソースから切断され、Oktaがユーザープロファイル属性のソースになります。
統合の構成
「Okta LDAP Agentのインストール」に記載されているエージェントの初期インストールおよび構成時の、OpenDJ統合の属性は次のとおりです。
- 一意の識別子属性:entryuuid
- DN属性:entrydn
- ユーザーオブジェクトクラス:inetorgperson
- ユーザーオブジェクトフィルター:(objectclass=inetorgperson)
- *アカウントで無効になっている属性:ds-pwp-account-disabled
- *アカウントで無効になっている値:TRUE
- *アカウントで有効になっている値:FALSE
- パスワード属性:userpassword
- グループオブジェクトクラス:groupofuniquenames
- グループオブジェクトフィルター:(objectclass=groupofuniquenames)
- メンバー属性:uniquemember
- パスワード有効期限切れ属性:ds-pwp-password-expiration-time
スキーマの読み取り
OpenDJの統合に関する、特別な考慮事項はありません。
AUXクラスの属性を追加するには、補助クラスを補助オブジェクトクラスとしてディレクトリのプロビジョニング構成に追加します。
パスワード変更
ユーザーは、Okta End-User Dashboardで[Settings(設定)]を選択してパスワードの変更をトリガーできます。
ユーザーがパスワードの変更またはリセットを行えるようにするには、[Security(セキュリティ)]>[Delegated Authentication(代理認証)]をクリックし、[LDAP]タブを選択してから、[Users can change their LDAP passwords in Okta(ユーザーはOktaでのLDAPパスワードを変更できます)]を選択します。
LDAPインスタンスでパスワードの長さや有効期限などの設定を構成できます。
失敗したパスワード更新操作はOktaによって解析され、[Delegated Authentication(代理認証)]ページにエラーメッセージが表示されます。
パスワードリセット
パスワードリセットは、管理者またはユーザーがパスワードを忘れた場合のフローによってトリガーされます。
新しいパスワードがパスワードポリシーの基準を満たさない場合、パスワードリセットが失敗する可能性があります。
ユーザーは、期限切れのパスワードを更新できません。期限切れのパスワードは、管理者がリセットする必要があります。
パスワードの検証
pwdPolicyオブジェクトクラスを使用して、OpenDJ固有のパスワードポリシーを実装します。
パスワードポリシーにOpenDJパスワードバリデーターを指定しない場合、パスワードの長さや使用可能な文字に関する制限はありません。
インポート
OpenDJで作成されたユーザーまたはグループは、最初のユーザープロファイルの変更が検出されるまで増分インポートには含まれません。
JITプロビジョニング
OpenDJジャストインタイム(JIT)プロビジョニングに関する特別な考慮事項はありません。ユーザーID(UID)は、E メール形式を使用してOktaユーザー名のデフォルト設定と一致させます。サインインのトリガーに外部IDプロバイダー(IDP)を使用しないでください。
JITプロビジョニングを正常に完了するには、以下が必要です。
- 構成された命名属性(UIDなど)の値がOktaに存在していないこと。
- 構成された命名属性(UIDなど)の値が、JITが有効なすべてのディレクトリで一意であること。
- 必須属性が提示されていること。Oktaのデフォルトはemail、givenName、sn、uidです。
- パスワードが正しいこと。
- [Account Disabled Attribute(アカウントで無効になっている属性)]が、LDAPサーバーでfalseに設定されていること。
JITプロビジョニングが正常に完了すると、[LDAP settings(LDAP設定)]ページとプロファイルエディタで指定されたすべてのユーザー属性がインポートされます。追加の必須属性を選択するには、プロファイルエディタを使用します。
メンバーシップのインポート
OpenDJ設定のユーザープロファイルがオブジェクトクラスgroupofuniquenames
を使用してグループに追加され、uniquemember
グループ属性が割り当てられます。
プロビジョニング
パスワードポリシーにOpenDJパスワードバリデーターを指定しない場合、パスワードの長さや使用可能な文字に関する制限はありません。
ユーザープロファイルの作成時にパスワードを作成して割り当てるには、次の手順を実行します。
- LDAPプッシュパスワードの更新を有効にするには、Oktaカスタマーサポートに連絡してください。
- 次の手順を実行して、代理認証を無効にします。
- Okta Admin Consoleで、[Security(セキュリティ)]>[Delegated Authentication(代理認証)]>[LDAP]に移動します。
- [Delegated Authentication(代理認証)]ペインで[Edit(編集)]をクリックします。
- [Enable delegated authentication to LDAP(LDAPへの代理認証を有効にする)]チェックボックスをオフにします。
- [Save(保存)]をクリックします。
- デフォルト設定を受け入れてすべてのLDAPユーザーパスワードをリセットし、[Disable LDAP Authentication(LDAP認証を無効にする)]をクリックします。
- Okta Admin Consoleで、[Directory(ディレクトリ)]>[Directory Integrations(ディレクトリ統合)]>[LDAP]>[Provisioning(プロビジョニング)]>[To App(アプリへ)]の順に進みます。
- [Edit(編集)]をクリックし、[Sync Password(パスワードを同期)]の横にある[Enable(有効)]を選択して、[Save(保存)]をクリックします。
[Sync Password(パスワードを同期)]が有効になると、LDAPエージェントはユーザーが初めてサインインする時にPASSWORD_UPDATEアクションを送信します。
既存のOktaユーザーをLDAPに割り当てるには、次の手順を実行します。
- Okta Admin Consoleで、[Directory(ディレクトリ)]>[Directory Integrations(ディレクトリ統合)]>[LDAP]>[Provisioning(プロビジョニング)]>[To App(アプリへ)]の順に進みます。
- [Edit(編集)]をクリックし、[Create Users(ユーザーを作成)]の横にある[Enable(有効)]を選択して、[Save(保存)]をクリックします。
- [Directory(ディレクトリ)]>[Groups(グループ)]をクリックします。
- ユーザーを割り当てるOktaグループを選択します。
- [Manage Directories(ディレクトリを管理)]をクリックします。
- 左側のペインでLDAPインスタンスを選択し、[Next(次へ)]をクリックします。
- [Provisioning Destination DN(プロビジョニング宛先DN)]フィールドに、新規ユーザーのLDAPコンテナーの完全識別名(DN)を入力します。
- [Confirm Changes(変更を確認)]をクリックします。
トラブルシューティング
LDAPディレクトリ認証に失敗すると、診断と解決に役立つ次のようなメッセージがエージェントログに表示されます。
エージェント:成功
scanResults are sent with user+group info POST initiated with result status=SUCCESS, actionType=USER_AUTH_AND_UPDATE, diagnostic message=, error code=, matched dn=, message=SUCCESS, result code=, vendor=OPEN_DJエージェント:代理認証の失敗
POST initiated with result status=FAILURE, actionType=USER_AUTH_AND_UPDATE, actionId=ADSv0hR8zflMGGeUY0g3, diagnostic message=, error code=49, matched dn=cn=LynxyForChange,cn=GroupForUser4Level,cn=GroupForUser3Level, cn=GroupForUser2Level,cn=GroupForUser1Level,ou=LynxySpecificUsers,ou=LynxyUsers, dc=example,dc=com, message=LDAPException(resultCode=49 (invalid credentials), errorMessage='invalid credentials'), result code=invalid credentials, vendor=OPEN_DJエージェント:ユーザーなし
POST initiated with result status=FAILURE, actionType=USER_AUTH_AND_UPDATE, actionId=ADSv0bQoITDYU63b80g3, diagnostic message=, error code=, matched dn=, message=User not found while executing query: (&(objectclass=inetorgperson)(uid=test@test.com)), result code=, vendor=OPEN_DJエージェント:パスワードの有効期限切れ
POST initiated with result status=FAILURE, actionType=USER_AUTH_AND_UPDATE, actionId=ADSv091Tx5GPJsUxV0g3, diagnostic message=, error code=49, matched dn=cn=LynxyForChange,cn=GroupForUser4Level,cn=GroupForUser3Level, cn=GroupForUser2Level,cn=GroupForUser1Level,ou=LynxySpecificUsers,ou=LynxyUsers, dc=example,dc=com, message=LDAPException(resultCode=49 (invalid credentials), errorMessage='invalid credentials', responseControls={PasswordExpiredControl(isCritical=false)}), result code=PASSWORD_EXPIRED, vendor=OPEN_DJエージェント:ロックアウトまたは無効
OpenDJには、ロックされたアカウントに対する固有のエラーコードがありません。pwdAccountLockedTimeが現在以降の時間を示している場合、応答コードは誤ったパスワードの場合と同一になります(49(無効な認証情報))
POST initiated with result status=FAILURE, actionType=USER_AUTH_AND_UPDATE, actionId=ADSv0pY84CfDLi2Jc0g3, diagnostic message=, error code=49, matched dn=cn=LynxyForChange,cn=GroupForUser4Level,cn=GroupForUser3Level,cn=GroupForUser2Level, cn=GroupForUser1Level,ou=LynxySpecificUsers,ou=LynxyUsers,dc=example,dc=com, message=LDAPException(resultCode=49 (invalid credentials), errorMessage='invalid credentials'), result code=invalid credentials, vendor=OPEN_DJ