Apache Directory Studioを使用してdc=example,dc=com
の下に新しいユーザーを追加すると、次のツリー構造になります。
dc=example,dc=com
|-- ou = engineering
|-- cn = Lawrence K.H Loh+o=IKEA+sn=Loh+uid=lawrence+displayName=Lawrence
以下は、cn
の属性リストです。
LDAP: error code 49 - INVALID_CREDENTIALS: Bind failed: Attempt to lookup non-existant entry
を介してこのエントリを接続すると、このエラーuid=lawrence,ou=engineering,dc=example,dc=com
が発生します。しかし、このcn=Lawrence K.H Loh+o=IKEA+sn=Loh+uid=lawrence+displayName=Lawrence,ou=engineering,dc=example,dc=com
を使用している場合は、正常に機能しています。認証のために長い名前の代わりにuid=lawrence
に切り替える方法を教えてください。
その特定のオブジェクトでは、それができる可能性は低いです。 LDAPは、オブジェクトの識別名(DN)でバインドするユーザーを探しています。この場合の主要な属性は、cn
です。コンテナ内のオブジェクトの特定の属性が、DNに関連付けられている属性以外に一意であるという保証はないため、これは意図的な設計上の決定です。
これにより、サービスがディレクトリを検索してuid=lawrence
はその特定のDNに関連付けられています(したがって、そのオブジェクトから必要な他の属性を見つけることができます)が、DNに対して明示的に実行する必要がある呼び出しは、プライマリ属性に対してのみ実行できます。
これは、DNの指定を回避できる方法がないということではありません。 SASL認証を実装し、SASLIDとDNの間のマップを定義することが思い浮かびます。ただし、質問のコンテキスト内では、いいえ、認証先のDNの非プライマリ属性をDNの代わりに使用するように切り替えることはできません。