我正在将LDAP认证添加到spring-boot应用程序中,所有设置都是相应的,即使提供了正确的凭据,我还是收到了“LDAP错误代码49 AcceptSecurityContext错误数据52 e v2580”错误。
我使用的是import javax.naming.Context;
,并且已经提到了下面的代码。
String url = ldap_url;
String domain = ldap_domain;
String uname = request.getUsername();
String pwd = request.getPassword();
boolean authentication = false;
boolean error = true;
String msg;
String ldapSearchBase = "OU=TEST_OU, DC=DC2, DC=DC1";
// create env for initial context
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, url);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "CN=" + uname + "@" + domain + "," + ldapSearchBase);
env.put(Context.SECURITY_CREDENTIALS, pwd);
NamingEnumeration results = null;
try {
LdapContext ctx = new InitialLdapContext(env, null);
authentication = true;
error = false;
} catch (NamingException e) {
logger.error("LDAP error for :{NamingException}" + e);
return ResponseEntity.ok(new ApiResponse(true, e.getMessage()));
} finally {
if (!error) {
msg = "Login success!!!";
} else {
msg = "Authentication failed!";
}
}
logger.info("exitinig...");
if (authentication) {
return ResponseEntity.ok(new ApiResponse(false, msg));
} else {
return ResponseEntity.ok(new ApiResponse(true, msg));
}
错误捕获为NamingException
。
3条答案
按热度按时间ux6nzvsh1#
LDAP错误code 49 ... data 52e“用户名有效但密码/凭据无效时返回”的错误响应。
可能存在when the domain controller computer account may not be synchronized with the Key Distribution Center (KDC)之类的基础设施问题。但是,当这种情况存在时,您可能会遇到更多其他问题。
uxhixvfz2#
当您的帐户需要智能卡才能登录时,可能会发生这种情况。
Active Directory中有一个名为“交互式登录需要智能卡”的设置。
tzdcorbm3#
如果您指定用户名但不指定Windows域,则可能会在Active Directory(Windows常用的LDAP实现)中收到此错误。
这是你应该做的:
用户名:<YOUR_WINDOWS_DOMAIN><YOUR_USERNAME>
密码:<YOUR_PASSWORD>