1

ログイン画面からユーザー名とパスワードを入力するJavaでActiveDirectory認証を実行したい。内部に多くのサブディレクトリがあるルートディレクトリがあります。ユーザーが階層全体で検索され、LDAPバインディングを実行するように認証を実行する方法。ルート内のすべてのサブディレクトリでユーザーが検索されるように自動化するにはどうすればよいですか?

以下のコードスニペットを見つけてください:

  Hashtable<String, String> ldapEnv = new Hashtable<String, String>(11);
                  ldapEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
                  //ldapEnv.put(Context.PROVIDER_URL,  "ldap://127.0.0.1:10389");
                  ldapEnv.put(Context.PROVIDER_URL,  prop.getProperty("ldapServer"));
                  ldapEnv.put(Context.SECURITY_AUTHENTICATION, "simple");
                  ldapEnv.put(Context.SECURITY_PRINCIPAL, "cn="+userName+",ou=Users,ou=ACN,ou=Peterborough,dc=xyz,dc=com");
                  //ldapEnv.put(Context.SECURITY_PRINCIPAL, "uid=admin,ou=system");                
                  ldapEnv.put(Context.SECURITY_CREDENTIALS,password);
                  ldapContext = new InitialDirContext(ldapEnv);

私が直面している問題は、Context.SECURITY_PRINCIPALがハードコードされているため、検索はこのハードコードされたディレクトリでのみ行われ、私の要件を満たしていないことです。

4

1 に答える 1

2

私が見たほとんどの実装では、読み取り専用の Active Directory を使用してユーザーのコンテキストを検索し、ユーザーの完全なコンテキストと提供されたパスワードを使用してログインを試みます。このようなものは、検索部分を開始するのに役立ちます。

于 2012-12-24T14:50:16.590 に答える