Sto tentando di autenticare un utente tramite LDAP contro Active Directory. In seguito è il frammento di codice che uso:Quali sono i formati SECURITY_PRINCIPAL accettati per l'autenticazione LDAP contro 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()
}
}
Il codice per lavori vincolante se fornisco:
- Down-Level Nome di accesso, vale a dire
NetBIOSDomainName\sAMAccountName
(ad esempio dominio \ nomeutente), o userPrincipalName
(es [email protected]), odistinguishedName
(ad esempio CN = nome utente UO = xxx, DC = abc, DC = com), oobjectSid
(ad esempio S-1-5-21-3623 811015-3361044348-30300820-1013)
come SECURITY_PRINCIPAL
, mentre omesso se sAMAccountName
(ad esempio username) è stato utilizzato (suppongo che solo i nomi unici all'interno della foresta siano validi).
Quindi quali sono gli schemi accettati per SECURITY_PRINCIPAL
? Ho cercato alcune domande simili, ma nessuna fornisce riferimenti ai documenti ufficiali AD/LDAP. O è una configurazione che potrei cercare da qualche parte? Grazie!
Ehi @Fung, hai trovato qualche soluzione sull'utilizzo di sAMAccountName perché anch'io sto affrontando lo stesso problema? – sunder