私はC#で書かれた簡単なアプリケーションを持っています。 このアプリケーションは、WindowsマシンとActive Directoryにログオンしたユーザーアカウントで動作します。ユーザ名とパスワードなしでJavaのLDAP Active Directoryに接続
このアプリケーションでは、LDAP Active Directoryから情報を取得します。 C#ので
私はそのようにLDAPとの接続を行います。
DirectoryEntry de = new DirectoryEntry("LDAP://OU=places,DC=system,DC=org");
、次の私は、(例えば)に必要なデータを取得する:
DirectorySearcher searcher = new DirectorySearcher(de);
searcher.Filter = "(telephone=111222333)";
SearchResultCollection resultCollection = searcher.FindAll();
あなたがそのアプリケーションで見たよう、私は必要はありません。ユーザー名とパスワードでLDAPにログするが、正しいパスを入力する必要がある:
DirectoryEntry
のコンストラクタは次のようになります。
public DirectoryEntry(
string path
)
そこにユーザー名とパスワードを使用してコンストラクタがあるが、私が言ったように私はそれを使用する必要はありません。
public DirectoryEntry(
string path,
string username,
string password
)
私はJavaで同じ情報を取得しようとしましたが、私は同様のを使用コード:
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://ad.host:389");
env.put(Context.SECURITY_PRINCIPAL, "username");
env.put(Context.SECURITY_CREDENTIALS, "password");
DirContext ldap = new InitialDirContext(env);
と私は(例えば)必要なデータを取得する次の:
SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration tel = ldap.search("OU=places,DC=system,DC=org", "(telephone=111222333)", searchControls);
しかし、1つの違いがあります。ご覧のとおり、LDAP Active Directoryに接続するには、ユーザー名とパスワードをJavaに入れる必要があります。
私は、私は次のようなエラーが表示され、ユーザー名とパスワードを入れていない場合は、次の
Exception in thread "main" javax.naming.NamingException:[LDAP: error code 1 - 000004DC: LdapErr: DSID-0C0906E8, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v1db1;] remaining name 'OU=places,DC=system,DC=org'
私は入れすることなく、Javaで同じマシンから同じLDAP Active Directoryにログインすることができれば私の質問ですユーザー名とパスワード?
C#のようにJavaでこれを行うのに相当するのは(ユーザー名とパスワードを入れないで)ですか?
何示します。env.putについて(Context.SECURITY_AUTHENTICATION、「なし」)。 – maszter
似たようなエラーがあります。 – zajjar
'env.put(Context.SECURITY_AUTHENTICATION、" none ");を試したときに' SECURITY_PRINCIPAL'と 'SECURITY_CREDENTIALS'行を削除しましたか? –