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]) lubdistinguishedName
(np CN = użytkownik, OU = XXX, DC = ABC, DC = com), lubobjectSid
(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!
Hej @Fung, czy otrzymałeś jakieś rozwiązanie dotyczące używania sAMAccountName, ponieważ mam do czynienia z tym samym problemem? – sunder