0

なぜこれが機能するのですか?

env.put(Context.PROVIDER_URL, "ldap://localhost:10389/o=csRepository");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
//env.put(Context.SECURITY_PRINCIPAL, "cn=John Eipe, ou=employees, o=csRepository");
//env.put(Context.SECURITY_CREDENTIALS, "qwer1234");

DirContext ctx = new InitialDirContext(env);
//operations on ctx

私の理解では、SECURITY_AUTHENTICATION が simple として指定され、ユーザー名またはパスワードが指定されていない場合、javax.naming.AuthenticationException をスローする必要があります。

4

1 に答える 1

2

解決しました。悲しいことに、それはそれがどのように機能するかです。Oracleのドキュメントでは以下のように述べられています。

空の文字列、空のバイト/文字配列、または null を Context.SECURITY_CREDENTIALS 環境プロパティに指定すると、認証メカニズムは「なし」になります。これは、単純な認証のために LDAP がパスワードを空にしないことを要求するためです。パスワードが指定されていない場合、プロトコルは自動的に認証を「なし」に変換します。

これにより、重大なセキュリティ違反が発生します。しかし、検証はアプリケーションに任されていると思います。

于 2014-04-05T16:02:33.477 に答える