6

Java için Play2 ile bir webApp yazıyorum ve kullanıcı kimlik doğrulaması için LDAP kullanmak istiyorum ... LDAP için yeni ve aslında nasıl çalıştığını ve nasıl Play'de kullanıldığını tam olarak bilmiyorum ...Oyna! LDAP ile Çerçeve Kimlik Doğrulaması

Şimdilik ben hile yapmalıyım this plugin buldum, ancak LDAP kimlik doğrulaması kullanan herhangi bir örnek bulamıyorum. İlk adımları atmama yardımcı olabilecek herhangi bir öğretici var mı?

Ayrıca iyi görünen, ancak oyun kimlik doğrulama eklentileri kullanmıyor bu blog yayını ile karşılaştım, bu yüzden bu esnek olmayabilir? http://www.philipp.haussleiter.de/2013/07/adding-ldap-authentication-to-a-play-2-application/

cevap

4

LDAP ve oynatma çerçevesini kullanarak kullanıcının kimliğini doğrulamak için bir örneğim var. İşte bu

public class ActiveDirectoryServices { 

    public static final String ldapURL = Play.application().configuration().getString("ActiveDirectory.url"); 
    public static final String domainName = Play.application().configuration().getString("ActoveDirectory.DomainName"); 
    public static final int timeout =   Play.application().configuration().getInt("ActoveDirectory.timeout"); 

    public static Promise<Boolean> authenticate(String username, String password) throws AuthenticationException, CommunicationException, NamingException{ 

    Hashtable<String, String> env = new Hashtable<String,String>();  

    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); 
    env.put("com.sun.jndi.ldap.connect.timeout", ""+(timeout*1000)); 
    env.put(Context.PROVIDER_URL, ldapURL); 
    env.put(Context.SECURITY_AUTHENTICATION, "simple"); 
    env.put(Context.SECURITY_PRINCIPAL, username+domainName); 
    env.put(Context.SECURITY_CREDENTIALS, password); 

    DirContext authContext = null; 
    authContext = new InitialDirContext(env);   
    return Promise.pure(Boolean.TRUE);       
    } 

} 

Sonra bir denetleyici içinde aşağıdaki şekilde yukarıdaki kodu kullanabilirsiniz yardımcı olacaktır kod umut:

try { 

    Promise<Boolean> promiseActiveDirectoryCheck = ActiveDirectoryServices.authenticate(userName, password); 
     return promiseActiveDirectoryCheck.flatMap(response -> { 

     if(response){       
     return Promise.pure(ok("access granted")); 
     } 


    }); 

}catch (AuthenticationException exp) { 
    return Promise.pure(ok("access denied")); 

}catch (CommunicationException exp) { 
    return Promise.pure(ok("The active directory server is not reachable")); 

}catch (NamingException exp) { 
    return Promise.pure(ok("active directory domain name does not exist")); 

} 
+0

Çok teşekkürler, ben önümüzdeki hafta denemek olacak ve – behzad

+0

haberdar hangi domainName değeri nedir? – behzad

+0

@behzad, etkin dizin ayarlarınızda kullandığınız alan adıdır. örneğin "foo.com" veya "mycompany.ca" olabilir – Ubaidah

İlgili konular