web-dev-qa-db-ja.com

LDAP:エラーコード49-80090308:LdapErr:DSID-0C0903A9、コメント:AcceptSecurityContextエラー、データ52e、v1db1

LDAP:エラーコード49-80090308:LdapErr:DSID-0C0903A9、コメント:AcceptSecurityContextエラー、データ52e、v1db1

「52e」コードは、ユーザー名は有効ですが、パスワードは無効です。 Apacheスタジオで同じユーザー名とパスワードを使用していますが、LDAPへの接続を正常に確立できました。

ここに私のJavaコード

    String userName = "*******";
    String password = "********";
    String base ="DC=PSLTESTDOMAIN,DC=LOCAL";
    String dn = "cn=" + userName + "," + base;  
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY,"com.Sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, "ldap://******");
    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    env.put(Context.SECURITY_PRINCIPAL, dn);
    env.put(Context.SECURITY_CREDENTIALS, password);
    LDAPAuthenticationService ldap = new LDAPAuthenticationService();
   // LdapContext ctx;
    DirContext ctx = null;
    try {
        ctx = new InitialDirContext(env);

エラーはこの行にありますctx = new InitialDirContext(env);

このエラーの正確な原因はわかりません。

47
anusha vannela

データ52e- ユーザー名は有効だがパスワード/資格情報が無効の場合に返される

おそらく次のようなものが必要です

String dn = "cn=" + userName + "," + "CN=Users," + base;  
25
jwilleke

私にとって、このように主要なセクションを設定すると問題は解決しました:

env.put(Context.SECURITY_PRINCIPAL, userId@domainWithoutProtocolAndPortNo);
21
Vishal

52e 1326 ERROR_LOGON_FAILUREユーザー名は有効だがパスワード/資格情報が無効な場合に返されます。他のほとんどのエラーが上記のように表示されないようにします。

http://ldapwiki.com/wiki/Common%20Active%20Directory%20Bind%20Errors

13
brcaak

Context.SECURITY_AUTHENTICATIONを「シンプル」として使用する場合、userPrincipalName属性値(user @ domain_base)を指定する必要があります。

7
Moe

CASでADを使用するときに同様の問題が発生しました。つまり、52eエラーです。私の場合、アプリケーションは実際のユーザー名ではなくCN =の形式でフルネームを受け入れます。

たとえば、Ross Butlerというフルネームのユーザーがいて、ログインユーザー名がrbutlerの場合、通常はcn = rbutler、ou = Users、dc = domain、dc = comのように入力しますが、毎回失敗します。これをcn = Ross Butler、ou = Users、dc = domain、dc = comに変更することで合格しました!!

4
Count

私の場合、ログインに成功するには@などを使用する必要があります。

sample_user @ sample_domain

3
Linh Nguyen

私の場合、次のようにユーザー名にドメイン名を追加することで問題が解決します。

string userName="yourUserName";
string password="passowrd";
string hostName="LdapServerHostName";
string domain="yourDomain";
System.DirectoryServices.AuthenticationTypes option = System.DirectoryServices.AuthenticationTypes.SecureSocketsLayer; 
string userNameWithDomain = string.Format("{0}@{1}",userName , domain);
DirectoryEntry directoryOU = new DirectoryEntry("LDAP://" + hostName, userNameWithDomain, password, option);
2
Mahsh Nikam

デバッグしてctx = nullを見ると、ユーザー名に問題がある可能性があります

2
HaoSi

LDAPは、トランザクションを別のサーバーDBに送信するときにADで認証しようとしています。このトランザクションは以前の資格情報を使用して生成されましたが、ユーザーが最近パスワードを変更したため、この認証は失敗します。この認証は、トランザクションのステータスを完了またはキャンセルに変更しない限り、...まで失敗し続けます。その場合、LDAPはこれらのトランザクションの送信を停止します。

1
Ebrahim

私にとっては、次のようにenvを変更することで問題が解決します。

 env.put("LDAP_BASEDN", base)
 env.put(Context.SECURITY_PRINCIPAL,"user@domain")
0
user3917389