1

Active Directory サーバーにログインするには、どの「プリンシパル」を指定すればよいか考えています。プリンシパルは、ログインしようとしている AD 内のユーザーである必要がありますか? または、ユーザーが AD にアクセスする権限を持っている限り、指定したドメイン内のユーザーにすることができますか?

資格情報エラー 49 で両方を試しました。しかし、AD がインストールされているサーバーの管理者アカウントを使用して、ldp.exe で AD にログインできます。

これが私のコードです。迅速なヘルプに感謝します。

Hashtable env= new Hashtable(11);
env.put(Context.SECURITY_AUTHENTICATION,"simple"); // Also tried none w/ the same error

// What principal should I use??
env.put(Context.SECURITY_PRINCIPAL,"CN=Ross,OU=Eng,DC=RossInc");//User
//env.put(Context.SECURITY_PRINCIPAL, user + "@" + domain); // Tried w/ the same error

env.put(Context.SECURITY_CREDENTIALS, "ross");//Password
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL,"ldap://myserver:389/DC=RossInc");

DirContext ctx = new InitialDirContext(env); <-- Fails with AuthenticationException: [LDAP: error code 49 - 8009030C
4

2 に答える 2

0

次のいずれかを提供できます。

  • NT スタイルのログイン名
  • Kerberos UPN (暗黙の UPN)
  • 明示的な UPN (追加の UPN サフィックスが定義されている場合)

さらに、単純なバインドは決して実行しないでください。Digest または GSS-API のいずれか。

于 2011-11-17T18:52:21.147 に答える
0

次の Oracle サイトのによると、セキュリティ プリンシパルは識別名です。

これは、ドメイン内のコンピューターから私のために機能するコードです。

Hashtable<String, String> ldapEnv = new Hashtable<String, String>(11);
ldapEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
ldapEnv.put(Context.PROVIDER_URL,  "ldap://societe.fr:389");
ldapEnv.put(Context.SECURITY_AUTHENTICATION, "simple");
ldapEnv.put(Context.SECURITY_PRINCIPAL, "cn=administrateur,cn=users,dc=societe,dc=fr");
ldapEnv.put(Context.SECURITY_CREDENTIALS, "test.2011");
ldapContext = new InitialDirContext(ldapEnv);

プリンシパルは、AD にアクセスする権限を持っている限り、AD 内のユーザーにすることができます。

于 2011-11-09T10:23:44.797 に答える