Windows Server 2012摘要Active Directory的MD5身份验证设置

时间:2015-11-19 09:25:30

标签: active-directory ldap windows-server-2012 digest-authentication sasl

请问如何在我的Windows Server 2012活动目录上设置Digest MD5身份验证,以允许客户端向服务器进行身份验证。这是我用来建立从客户端到服务器的连接的代码。

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()

1 个答案:

答案 0 :(得分:0)

我在Windows Server 2012R2上遇到同样的问题。

如果对您不重要,则有一种解决方法 - 使用sAMAccountNameuserPrincipalName格式的值Context.SECURITY_PRINCIPAL

因为您当前使用的distinguishedName格式似乎会造成麻烦。

以下是适用于您的内容:

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

很少有参考文献描述类似问题:

"Active Directory does not support distinguished name."

"The distinguished name (DN) does not work for authentication; the userPrincipalName attribute must be used instead."