2017-01-20 5 views
0

Я пытаюсь получить простой фрагмент кода для запуска в java-аутентификации в качестве связующего для Foxpass (размещенная служба LDAP), а затем пытается аутентифицировать другого пользователя. Я в основном создал связующее в моих настройках Foxpass и создал некоторых пользователей.Аутентификация пользователей LDAP после привязки с помощью Foxpass

Код:

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] 

Но ничего не работает. Любая помощь по поиску нужного формата для поиска.

Спасибо

ответ

0

Мне кажется, ваш SearchString когда-то жили в среде Active Directory. С Foxbase try

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