[英]Authentication error 49 52e with jndi in a java application- invalid token
我想問一個LDAP服務器,在Java應用程序中提供的用戶名和密碼是否正確。
我最終將此功能與jndi一起使用(這是我用來探究返回異常消息的LDAP的測試功能):
public static String checkCredentials(String securityPrincipal,
String password,
String ldapUrl,
String securityAuthentication)
{
String userVerify = "";
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, ldapUrl);
env.put(Context.SECURITY_AUTHENTICATION, securityAuthentication);
env.put(Context.SECURITY_PRINCIPAL, securityPrincipal);
env.put(Context.SECURITY_CREDENTIALS, password);
try {
DirContext authContext = new InitialDirContext(env);
userVerify = testDescription + " - Success";
authContext.close();
} catch (AuthenticationException authEx) {
userVerify = "AuthenticationException: " + authEx.getMessage();//"Authentication failed!";
} catch (NamingException namEx) {
userVerify = "NamingException: " + namEx.getMessage();//"Something went wrong!";
}
return userVerify;
}
當我通過傳遞正確的ldapUrl
調用checkCredentials
(在我的情況下是ldap://192.168.48.60:389
)時,我總是得到結果(該函數返回String
):
AuthenticationException:[LDAP:錯誤代碼49-80090308:LdapErr:DSID-0C0903A8,注釋:AcceptSecurityContext錯誤,數據52e,v1db1]
該頁面說這是驗證錯誤(49),並且“用戶名有效,但密碼/憑據無效”(52e)。
我為securityPrincipal
嘗試了所有這些方法:
約翰
約翰@我的公司
CN =約翰·康
CN = john,OU =內部用戶,DC = mycompany
password
和安全性secuirityAuthentication
似乎被忽略。
我嘗試從http://www.ldapadmin.org/安裝LDAP admin,也從中得到:
LDAP錯誤! 無效的憑證:80090308:LdapErr:DSID-0C0903A8,注釋:AcceptSecurityContext錯誤,數據52e,v1db1。
無效的令牌傳遞給該函數。
這以某種方式告訴我更多“無效令牌”。
有指針嗎? 我被困住了。
在securityAuthentication中傳遞“ none”而不是“ simple”完成了這項工作。
至少沒有例外,即使密碼錯誤,即使UserVerifyT返回成功,如果返回了密碼,我也會像過去一樣通過檢索用戶的郵件來處理此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.