请问如何在我的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()
答案 0 :(得分:0)
我在Windows Server 2012R2上遇到同样的问题。
如果对您不重要,则有一种解决方法 - 使用sAMAccountName
或userPrincipalName
格式的值Context.SECURITY_PRINCIPAL
。
因为您当前使用的distinguishedName
格式似乎会造成麻烦。
以下是适用于您的内容:
env.put(Context.SECURITY_PRINCIPAL,"DemoUser")
很少有参考文献描述类似问题: