2016-06-02 3 views
3

Я создал сервер LDAP на своей машине и создал одного пользователя в качестве администратора внутри LDAP-сервера, и я могу получить к нему доступ с URL-адресом: http://192.158.2.136/phpldapadmin, теперь у меня есть страница входа в мое приложение и что я хочу, когда кто-то вводит имя пользователя и пароль, я хочу, чтобы мое приложение проверило этого пользователя с сервера LDAP, то есть я должен проверить, что имя пользователя и пароль введено одинаково, существует на сервере LDAP или нет. Поэтому я пробовал с apacheds-all, но не мог найти подходящий способ отправить имя пользователя и пароль на сервер, может кто-нибудь скажет мне, как это сделать в java или scala, я должен иметь возможность проверять учетные данные пользователя с сервера LDAP с использованием java или scala в качестве кода клиента. Спасибо заранее! !Аутентификация LDAP с использованием scala или java

ответ

1

Я получил решение, наконец:

object LDAPValidations { 

def validateForLDAP(username: String, passcode: String): Boolean = { 

val result = Try { 
    var props = new Properties 
    props.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory") 
    props.put(Context.PROVIDER_URL, "ldap://192.168.1.121:389") 
    props.put(Context.SECURITY_PRINCIPAL, s"cn=$username,cn=staff,dc=myreutore,dc=local") 
    props.put(Context.SECURITY_CREDENTIALS, "administrator") 

    var context: InitialDirContext = new InitialDirContext(props) 

    val controls: SearchControls = new SearchControls 
    controls.setReturningAttributes(Array[String]("givenName", "sn", "memberOf", "cn")) 
    controls.setSearchScope(SearchControls.SUBTREE_SCOPE) 

    val answers: NamingEnumeration[SearchResult] = context.search("dc=myrtor,dc=local", s"cn=$username", controls) 
    val result: SearchResult = answers.nextElement 

    val user: String = result.getNameInNamespace 
    props = new Properties 
    props.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory") 
    props.put(Context.PROVIDER_URL, "ldap://192.168.1.121:389") 
    props.put(Context.SECURITY_PRINCIPAL, user) 
    props.put(Context.SECURITY_CREDENTIALS, passcode) 
    context = new InitialDirContext(props) 
} 
result match { 
    case Success(v) => true 
    case Failure(v) => false 
} 

}

}

Смежные вопросы