2013-04-02 13 views
16

Próbuję uwierzytelnić użytkownika poprzez LDAP przeciwko Active Directory. Poniżej znajduje się fragment kodu używam:Jakie są akceptowane formaty SECURITY_PRINCIPAL dla uwierzytelniania LDAP w usłudze Active Directory?

private DirContext bindAsUser(String bindPrincipal, String password) { 
    Hashtable<String,String> env = new Hashtable<String,String>(); 
    env.put(Context.SECURITY_AUTHENTICATION, "simple"); 
    env.put(Context.SECURITY_PRINCIPAL, bindPrincipal); 
    env.put(Context.PROVIDER_URL, bindUrl); 
    env.put(Context.SECURITY_CREDENTIALS, password); 
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); 
    env.put(Context.REFERRAL, "follow"); 

    try { 
     return new InitialLdapContext(env, null); 
    } catch (NamingException e) { 
     e.printStackTrace() 
    } 
} 

Kod do wiązania prace gdybym zapewniają:

  • niższego poziomu nazwę logowania, tj NetBIOSDomainName\sAMAccountName (np domena \ nazwa_użytkownika) lub
  • userPrincipalName (np [email protected]) lub
  • distinguishedName (np CN = użytkownik, OU = XXX, DC = ABC, DC = com), lub
  • objectSid (np S 1-5-21-3623 811015-3361044348-30300820-1013)

jako SECURITY_PRINCIPAL, gdy nie udało się w przypadku sAMAccountName (np nazwa użytkownika) (chyba tylko nazwy unikatowe w lesie są prawidłowe).

Więc jakie są akceptowane wzory dla SECURITY_PRINCIPAL? Przeszukałem kilka podobnych pytań, ale żadne nie zawierają odniesienia do oficjalnych dokumentów AD/LDAP. Czy jest to konfiguracja, którą mógłbym gdzieś szukać? Dzięki!

+0

Hej @Fung, czy otrzymałeś jakieś rozwiązanie dotyczące używania sAMAccountName, ponieważ mam do czynienia z tym samym problemem? – sunder

Odpowiedz

1

Myślę, że potrzebujesz sprawdzić główny szablon LDAP. Określa główny szablon uwierzytelniania wymagany przez serwer LDAP. Głównym szablonem uwierzytelniania jest format, w którym informacje uwierzytelniające dla podmiotu zabezpieczeń (osoby, która się loguje) muszą zostać przekazane do serwera LDAP. Wartością domyślną jest $ {email}, czyli format wymagany przez Microsoft Active Directory. Inne serwery LDAP wymagają różnych szablonów uwierzytelniania. Skontaktuj się z administratorem sieci, aby uzyskać więcej informacji na temat serwera LDAP.