20.8. パスワードなしのアクセスについてのアカウント可用性の確認
多くの場合は、Directory Server がユーザーアカウントの認証情報を返すため、クライアントは実際にそのユーザーとしてバインド (またはバインドを試行) します。また、バインドの試行には、ユーザー認証情報 (通常はパスワードまたは証明書) が必要です。Directory Server は、認証されていないバインドおよび匿名バインドを許可しますが、いずれのバインドもユーザーアカウント情報をすべて返しません。
クライアントが他の操作を行うために、ユーザーアカウントに関する情報、特にそのアカウントの認証を許可するかどうかの情報を必要とする場合がありますが、クライアントは Directory Server にそのユーザーアカウントの認証情報を持っていないか、使用しています。基本的に、クライアントは、ユーザーアカウント情報 (アカウントにパスワードがある場合は、パスワードの有効期限情報を含む) を取得するために、認証情報なしで認証されたバインド操作を実行する必要があります。
Account Usability Extension Control を渡すと、ldapsearch でこれを行うことができます。このコントロールは、あたかも特定のユーザーに対して認証済みのバインド操作を行い、そのユーザーのアカウントステータスを返すかのように動作しますが、実際にはサーバーにバインドすることはありません。これにより、クライアントはそのアカウントがログインに使用できるかどうかを判断し、そのアカウント情報を PAM などの別のアプリケーションに渡すことができます。
たとえば、Account Usability Extension Control を使用すると、システムが Directory Server を ID バックエンドとして使用でき、認証操作が Directory Server の外部で実行されるスマートカードや SSH 鍵などのパスワードなしの認証方法を使用できます。
20.8.1. アカウントのユーザービリティー拡張制御を使用したエントリーの検索
Account Usability Extension Control は ldapsearch の拡張機能です。アカウントのステータスと、そのアカウントのパスワードポリシーに関する情報を提供する、返された各エントリーの追加行を返します。次に、クライアントまたはアプリケーションはそのステータスを使用して、そのユーザーアカウントの Directory Server 外で行われた認証の試行を評価できます。基本的に、この制御では、認証操作なしにユーザーが認証を許可するかどうかを制御します。
注記
Directory Server が使用する OpenLDAP ツールは、Account Usability Extension Control に対応していません。OpenDS などの他の LDAP ユーティリティーや、制御をサポートする他のクライアントを使用できます。
例えば、OpenDS ツールを使用する場合、コントロールは、コントロール OID (1.3.6.1.4.1.42.2.27.9.5.8) を持つ
-J
、または accountusability:true
フラグを使用して指定することができます。
# ldapsearch -D "cn=Directory Manager" -W -p 389 -h server.example.com -b "dc=example,dc=com" -s sub-J "accountusability:true"
"(objectclass=*)" # Account Usability Response Control# The account is usable
dn: dc=example,dc=com objectClass: domain objectClass: top dc: example ...
これは、特定のエントリーに対して実行することもできます。
# ldapsearch -D "cn=Directory Manager" -W -p 389 -h server.example.com -b "uid=bjensen,ou=people,dc=example,dc=com" -s base-J "accountusability:true"
"(objectclass=*)" # Account Usability Response Control# The account is usable
dn: uid=bjensen,ou=people,dc=example,dc=com ...
注記
デフォルトでは、Directory Manager のみが Account Usability Extension Control を使用できます。他のユーザーが Account Usability Extension Control を使用できるようにするには、cn=features でサポート対象のコントロールエントリー上の ACI に設定します。「アカウントのユーザービリティー検索の対象を変更」を参照してください。
このコントロールは、アカウントの実際のステータスや、ユーザーアカウントのパスワードポリシー設定 (ユーザーにパスワードがある場合) に応じて異なるメッセージを返します。
アカウントのステータス | コントロール結果メッセージ |
---|---|
有効なパスワードがあるアクティブなアカウント | The account is usable |
パスワードが設定されていないアクティブなアカウント | The account is usable |
期限切れのパスワード | Password expired |
アカウントのパスワードポリシーが変更される | Password expired |
アカウントがロックされ、ロックアウト期間がありません | Password reset |
アカウントがロックされ、ロックアウト期間があります | Time (in seconds) for automatic unlock of the account |
最初のログイン時にアカウントのパスワードをリセットする必要があります | Password reset |
パスワードの期限が切れており、猶予期間ログインが許可されます | Password expired and X grace login is allowed |
パスワードの有効期限が切れ、猶予ログイン回数がなくなっています。 | Password expired |
パスワードの有効期限が切れます (期限切れの警告)。 | Password will expire in X number of seconds |
20.8.2. アカウントのユーザービリティー検索の対象を変更
デフォルトでは、Directory Manager のみが Account Usability Extension Control を使用できます。他のユーザーは、サポートされるコントロールエントリーに適切な ACI を設定することで、Account Usability Extension Control を使用できます。コントロールエントリーは、Account Usability Extension Control OID (1.3.6.1.4.1.42.2.27.9.5.8) に対して名前が付けられます。
たとえば、cn=Administrators,ou=groups,dc=example,dc=com グループのメンバーが、全ユーザーの Account Usability Extension Control を読み取れるようにするには、以下を実行します。
# ldapmodify -D "cn=Directory Manager" -W -x dn: oid=1.3.6.1.4.1.42.2.27.9.5.8,cn=features,cn=config changetype: modify add: aci aci: (targetattr = "*")(version 3.0; acl "Account Usable"; allow (read)(groupdn = "ldap:///cn=Administrators,ou=groups,dc=example,dc=com");)