Настройка проверки подлинности Windows Server 2012 Digest MD5 для Active Directory

Могу ли я спросить, как мне настроить аутентификацию для Digest MD5 в моем активном каталоге Windows Server 2012, чтобы клиент мог пройти аутентификацию на сервере. Вот код, который я использую для установления соединения клиента с сервером.

Hashtable env = new Hashtable()
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory")
env.put(Context.SECURITY_AUTHENTICATION,"DIGEST-MD5 CRAM-MD5")
env.put(Context.SECURITY_PROTOCOL,"ssl")
env.put(Context.PROVIDER_URL,"ldap://test.com:636/") //The Window Server Address
env.put(Context.SECURITY_PRINCIPAL,"CN=DemoUser,OU=test,DC=test,DC=com")
env.put(Context.SECURITY_CREDENTIALS,"thepasswordishere")
try {
    def ctx = new InitialDirContext(env)
    if (ctx) {
              println "Authentication Success"
            }
}catch(AuthenticationException elc){
println elc.printStackTrace()
println "Authentication Fail"
}catch(Exception e){
println e.printStackTrace()
}
ctx.close()

person Derwin FeelsTired    schedule 19.11.2015    source источник


Ответы (1)


Та же проблема для меня здесь, на Windows Server 2012R2.

Если для вас это не критично, есть обходной путь - используйте значение в формате sAMAccountName или userPrincipalName для Context.SECURITY_PRINCIPAL.

Потому что формат distinguishedName, который вы сейчас используете, кажется, вызывает проблемы.

Вот что должно работать для вас:

env.put(Context.SECURITY_PRINCIPAL,"DemoUser")

Несколько ссылок, описывающих похожие проблемы:

"Active Directory не поддерживать различающееся имя."

" Отличительное имя (DN) не работает для аутентификации, вместо него необходимо использовать атрибут userPrincipalName."

person Vlad.Bachurin    schedule 16.03.2016