gpt4 book ai didi

java - 如果用户名包含点 (.),Active Directory LDAP 身份验证将失败

转载 作者:太空宇宙 更新时间:2023-11-04 07:14:26 24 4
gpt4 key购买 nike

我用Java制作了一个Active Directory(winserver 2012)LDAP身份 validator ,在这种情况下,当AD用户名包含dost(.)时,身份验证失败,但有以下异常(exception):

javax.naming.AuthenticationException: [LDAP: error code 49 - 8009030C: LdapErr: DSID-0C0904F8, comment: AcceptSecurityContext error, data 52e, v23f0

如果用户名不包含点,则 auth.工作正常。

有代码:

private DirContext getDirContext(String username, String password) {

...

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

env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_AUTHENTICATION, "DIGEST-MD5");
env.put(Context.PROVIDER_URL, "LDAP://server.test.local:389");
env.put(Context.SECURITY_PRINCIPAL, "test.user");
env.put(Context.SECURITY_CREDENTIALS, "password");
env.put(Context.REFERRAL, "follow");
env.put("java.naming.ldap.attributes.binary", "objectGUID objectSid");

DirContext ctx;

try {
ctx = new InitialLdapContext(env, null);
} catch (NamingException ex) {
getLogger().log(Level.WARNING,
"ACTIVE DIRECTORY - AUTHENTICATION ERROR: " + ex);
}

return ctx;
}

我尝试将点替换为 %2e,并尝试了完整的用户名 (test.user@test.local),但这些并没有解决我的问题。

有人有什么想法吗?谢谢。

最佳答案

Context.SECURITY_PRINCIPAL必须是您正在使用的上下文中的有效主体名称。 (在您的情况下,LDAP - AD。)

因此,完全限定的 DN 或 userPrincipalName 或 domain\samaccountname 应该可以工作。我们已经放了一些JNDI samples

关于java - 如果用户名包含点 (.),Active Directory LDAP 身份验证将失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20175193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com