Ich versuche, einen Benutzer über LDAP gegen Active Directory zu authentifizieren. Es folgt der Code-Schnipsel ich benutze:Was sind die akzeptierten SECURITY_PRINCIPAL-Formate für LDAP-Authentifizierung gegen 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()
}
}
Der Code für die Bindung funktioniert, wenn ich zur Verfügung stellen:
- Down-Level-Anmeldename, dh
NetBIOSDomainName\sAMAccountName
(zB Domäne \ Benutzername) oder userPrincipalName
(zB [email protected]) oderdistinguishedName
(zB CN = Benutzername, OU = xxx, DC = abc, DC = com) oderobjectSid
(zB S-1-5-21-3623 811015-3361044348-30300820-1013)
als SECURITY_PRINCIPAL
, während es nicht bestanden, wenn sAMAccountName
(z.B. benutzername) wurde verwendet (ich denke nur die Namen, die innerhalb der Gesamtstruktur eindeutig sind).
Was sind die akzeptierten Muster für SECURITY_PRINCIPAL
? Ich habe ein paar ähnliche Fragen durchsucht, aber keine gibt einen Verweis auf offizielle AD/LDAP-Dokumente. Oder ist es eine Konfiguration, die ich irgendwo nachschlagen könnte? Vielen Dank!
Hey @Fung, hast du irgendeine Lösung bezüglich der Verwendung von sAMAccountName bekommen, da ich auch das gleiche Problem habe? – sunder