2011-11-09 8 views
1

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

両方とも資格エラー49で試しました。しかし、ADがインストールされているサーバーのAdministratorアカウントを使用して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 

答えて

0

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

は、ドメイン内のコンピュータから私のために働いていくつかのコードです:

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内のユーザーであることができます。

+0

私はADとコードに「プリンシパル」を設定しました。それから私はそれを使用してログインし、同じエラーが発生しました! –

+0

この例は、therディレクトリサービスに対してのみ有効です。 –

0

次のいずれかを提供することができます:

  • NTスタイルのログイン名
  • ケルベロスUPN(暗黙的UPN)を
  • 明示的なUPN(追加のUPNが定義されているだけで十分な場合)

詳細以上、決して簡単なバインドを実行することはありません!ダイジェストまたはGSS-API。

+0

再度適切な英語でお願いします。 –

関連する問題