LDAP からユーザーを検索したいのですが、DN とパスワードを使用してその特定のユーザーに接続 (検証) したいユーザーを取得した後、DN の取得に成功しましたが、バインド方法がわかりません。
4 に答える
公式ドキュメントから取った例を次に示します。
// Set up the environment for creating the initial context
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=JNDITutorial");
// Authenticate as S. User and password "mysecret"
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn=S. User, ou=NewHires, o=JNDITutorial");
env.put(Context.SECURITY_CREDENTIALS, "mysecret");
DirContext ctx = new InitialDirContext(env);
適切な認証モデルを選択する必要があります。以前に試してみましたが、うまくいきました。
LDAP bind() 操作は、JNDI の次の操作に対応します。
環境内にログインを引き起こすのに十分な情報、つまりセキュリティ プリンシパルと資格情報を使用して
InitialDirContext
またはを構築する、またはInitialLdapContext
reconnect()
環境内のセキュリティ情報なしで、または別のプリンシパルに関連するセキュリティ情報を使用してLdapContext
最初に取得されたが、その後環境が変更された を呼び出す。
LDAPを使用してディレクトリサーバーに接続すると、接続状態は認証されません。サーバー管理者が認証されていない要求を許可している場合、要求は認証されていない接続で送信できます。BIND要求は、接続の認証状態を変更するために使用されます。
UnboundID LDAP SDKを使用した検索と認証の例を次に示します:SimpleBindExample.java。この例では、ベースオブジェクト、名前付け属性、およびユーザー名を指定してエントリを検索し、を使用して認証を試みsimple bind
ます。SASLバインドを使用した例は、同じように簡単に作成できます。