2017-01-20 8 views
0

私は、Foxpass(ホストされたLDAPサービス)のバインダーとしてJava認証で実行し、別のユーザーを認証しようとする単純なコードスニペットを取得しようとしていました。 私は基本的に私のFoxpass設定でバインダーを作成し、いくつかのユーザーも作成しました。Foxpassとのバインド後にLDAPにユーザーを認証する

コードは次のとおり

Hashtable<String,String> env = new Hashtable <String,String>(); 
env.put(Context.SECURITY_AUTHENTICATION, "simple"); 
env.put(Context.SECURITY_PRINCIPAL, bindUser); 
env.put(Context.SECURITY_CREDENTIALS, bindPassword); 
env.put(Context.INITIAL_CONTEXT_FACTORY, contextFactory); 
env.put(Context.PROVIDER_URL, myFoxpassUrl); 

try { 
    DirContext ldapContext = new InitialDirContext(env); 

    NamingEnumeration<SearchResult> results = null; 

    SearchControls controls = new SearchControls(); 
    controls.setSearchScope(SearchControls.SUBTREE_SCOPE); 
    controls.setCountLimit(1); 
    controls.setTimeLimit(5000); 

    String searchString = "(&(objectCategory=user)(sAMAccountName=username))"; 

    results = ldapContext.search("", searchString, controls); 

    System.out.println(results.hasMore()); 
} 
catch (Exception e) 
{ 
    e.printStackTrace() 
} 

結合(bindUsernameとBINDPASSWORDうまく機能と認証)。ただし、ユーザーを検索すると0の値が返されます。私は使用しようとしました:

sAMAccountName=myusername 
[email protected] 
sAMAccountName=CN=myusername,DC=mydomain,DC=com 
Or 
username=myusername 
... 
Or 
[email protected] 

しかし、何も動作していないようです。検索を行うための適切なフォーマットを見つけるための助け。

は、あなたのsearchStringのは、かつてのActive Directory環境に住んでいた私には思える

答えて

0

ありがとうございます。 Foxbaseで試してみてください

String searchString = String.format("(uid=%s)", username);

関連する問題