2

LDAP からユーザーを検索したいのですが、DN とパスワードを使用してその特定のユーザーに接続 (検証) したいユーザーを取得した後、DN の取得に成功しましたが、バインド方法がわかりません。

4

4 に答える 4

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);

適切な認証モデルを選択する必要があります。以前に試してみましたが、うまくいきました。

于 2012-06-15T07:27:07.837 に答える
2

LDAP bind() 操作は、JNDI の次の操作に対応します。

  1. 環境内にログインを引き起こすのに十分な情報、つまりセキュリティ プリンシパルと資格情報を使用してInitialDirContextまたはを構築する、またはInitialLdapContext

  2. reconnect()環境内のセキュリティ情報なしで、または別のプリンシパルに関連するセキュリティ情報を使用してLdapContext最初に取得されたが、その後環境が変更された を呼び出す。

于 2012-06-15T11:54:21.343 に答える
1

LDAPを使用してディレクトリサーバーに接続すると、接続状態は認証されません。サーバー管理者が認証されていない要求を許可している場合、要求は認証されていない接続で送信できます。BIND要求は、接続の認証状態を変更するために使用されます。

UnboundID LDAP SDKを使用した検索と認証の例を次に示します:SimpleBindExample.java。この例では、ベースオブジェクト、名前付け属性、およびユーザー名を指定してエントリを検索し、を使用して認証を試みsimple bindます。SASLバインドを使用した例は、同じように簡単に作成できます。

于 2012-06-15T10:06:33.830 に答える