0

LDAP認証は初めてです。LDAP 資格情報を使用してユーザーを認証したいと考えています。そのために、他のユーザーを認証できるように、サーバーからアプリケーション資格情報を取得しました。

アプリケーション ユーザーとしての資格情報は次のとおりです。

Test LDAP Server IP: xx.xx.xx.xx
Port: 389
Bind DN:uid=uidxx,ou=applications,dc=dcxx
password: passxx

このユーザーを認証するために、コードを次のように記述しました

public String ldap()
{
        String value=null;
        SearchControls constraints= new SearchControls();
        Hashtable<String, String> env= new Hashtable<String, String>();
        env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
        env.put(Context.PROVIDER_URL,"ldap://xx.xx.xx.xx:389");
        env.put(Context.SECURITY_AUTHENTICATION, "simple");
        env.put(Context.SECURITY_PRINCIPAL,"uid=uidxx, ou=applications, dc=dcxx");
        env.put(Context.SECURITY_CREDENTIALS,"passxx");

        try {
            DirContext ctx = new InitialDirContext(env);
            value = "Done with it";

        } 
        catch(AuthenticationException e)
        {
            value = "Invalid User name or password";
        }
        catch (NamingException e) {
            e.printStackTrace();
            value = "Exception occurred";

        }

        return value;
    }

戻り値を次のように取得しました"Done with it"

メールIDとパスワードを知っている他のユーザーを認証したいと思います。メールID、パスワードを使用して他のユーザーを認証したいのと同じように、そのためにuidxxとpassxxを認証してもらいました。どうすればいいですか?

他の情報源から多くの助けを得ていません。

ありがとうございました

4

1 に答える 1

1

LDAP共通ワークフローで認証する場合

  1. 持っている資格情報を使用して LDAP にバインドします。このユーザーは、少なくともユーザーのサブツリーへの読み取り専用アクセス権を持っている必要があります。多くの場合、ou=People、ou=Domain、dc=com などです。
  2. LDAP サーバーにユーザーの DN を照会します (ここで ANR が役立つ場合があります)。
  3. アプリケーションに提供されたユーザーの DN とパスワードを使用して、LDAP へのバインドを試みます

これが機能するのは、すべてのユーザーにデータベース内のオブジェクトに対する RW 権限を与えるのが非常に一般的だからです。ユーザーが自分のパスワードを変更できるようにする場合に非常に便利です。

于 2013-07-25T06:08:38.600 に答える