2017-12-15 25 views
0

Javaアプリケーションで提供されたユーザー名とパスワードが正しいかどうかをLDAPサーバーに問い合わせる必要があります。認証エラー49 javaアプリケーションでjndiを使用する52e - 無効なトークン

私は、この関数(それは私が例外メッセージを返すLDAPを探索するために使用していますテスト機能である)と、JNDIを使用して終了:私はcheckCredentials呼び出しとして正しいldapUrl(その中を通すことにより、

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; 
} 

私の場合はそれが私はいつも(関数はStringを返す)結果として取得)ldap://192.168.48.60:389です:

含むAuthenticationException:[LDAP:エラー・コード49から80090308:LdapErr: DSID-0C0903A8コメント:AcceptSe curityContextエラー、データ部52e、v1db1]

このpageは(52E)それは認証エラー(49)であり、 "ユーザ名が有効ですが、パスワード/資格が無効である" と述べています。

私はsecurityPrincipalのためにこれらのすべてを試してみました:

をジョン

ジョン@ mycompanyの

CN =ジョン、CONN

CN =ジョン、OU =内部ユーザー、DC =マイコンパニエ

passwordsecuirityAuthenticationは無視されているようです。

私はhttp://www.ldapadmin.org/からLDAP管理をインストールしようともそれからの私が取得:

LDAPエラーを!無効な資格情報:80090308:LdapErr:DSID-0C0903A8、 コメント:AcceptSecurityContextエラー、データ52e、v1db1。

無効なトークンが関数に渡されました。

何とか「無効なトークン」と表示されます。

任意のポインタ?ハマった。

答えて

0

securityAuthenticationで「シンプル」ではなく「なし」を指定すると、ジョブが作成されました。

少なくとも、例外はありません。たとえPassowrdが間違っていても、UserVerifyTが成功を返しても、メールが返ってきた場合、私は過去にユーザーのメールを取得したように扱います。

関連する問題