2013-04-02 10 views
16

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]), o
  • distinguishedName (ad esempio CN = nome utente UO = xxx, DC = abc, DC = com), o
  • objectSid (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!

+0

Ehi @Fung, hai trovato qualche soluzione sull'utilizzo di sAMAccountName perché anch'io sto affrontando lo stesso problema? – sunder

risposta

1

Penso che sia necessario controllare il modello principale LDAP. Specifica il modello di autenticazione principale richiesto dal server LDAP. Il modello di autenticazione principale è il formato in cui le informazioni di autenticazione per l'entità di sicurezza (la persona che sta effettuando l'accesso) devono essere passate al server LDAP. Il valore predefinito è $ {email}, che è il formato richiesto da Microsoft Active Directory. Altri server LDAP richiedono modelli di autenticazione diversi. Rivolgersi al proprio amministratore di rete per ulteriori informazioni sul server LDAP.

Problemi correlati