2

私はこのトピックについてもっと見つけるだろうと思ったが、私はしなかった。

特定のユーザーがどのouに属しているかをチェックするJavaアプリケーションを作成する必要があります。

しかし、サーバーで認証するために、ユーザー名とパスワードを要求することも、ソース(または他のファイル)に保存することもできません。

JNDIとJavaを使用して、現在ログインしているユーザーで認証する方法はありますか?

4

3 に答える 3

2

できることは、現在Javaアプリケーションにログインしているユーザーと同じユーザー名のユーザーがいるかどうかを確認することだけです。パスワードがないと、他に何もチェックできません。これを行うには、他のユーザーを一覧表示する権限を持つLDAPユーザーのユーザー名とパスワードが必要です。次に、ユーザーのLDAPを照会できます。

これは私が使用しているものを応用した例であり、Active Directoryをチェックするため、おそらくいくつかの変更が必要になります。

boolean userFound = user_exits("searchUser",
        "searchPassword",
        "(sAMAccountName={USERNAME})",
        "ldap://ldap.mydomain.com",
        "OU=MYOU,dc=mydomain,dc=com");

private boolean user_exits(String searchUser, String searchPassword,
        String filter, String url, String baseDn) throws NamingException {
DirContext ctx = null;
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, url);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, searchUser);
env.put(Context.SECURITY_CREDENTIALS, searchPassword);

try {
    ctx = new InitialDirContext(env);
        String[] attributeFilter = {};
        SearchControls sc = new SearchControls();
        sc.setReturningAttributes(attributeFilter);
        sc.setSearchScope(SearchControls.SUBTREE_SCOPE);

        NamingEnumeration<SearchResult> results = ctx.search(baseDn, filter, sc);
        return results.hasMore();

    } catch (NamingException e) {
        throw e;
    } finally {
        if (ctx != null) {
            try {
                ctx.close();
            } catch (NamingException e) {}
        }
    }       
}
于 2012-06-11T12:16:55.927 に答える
1

LDAPクライアントに既存の接続がある場合は、who am i?拡張要求を使用するか、またはを使用authorization identity request controlして既存の接続のauthIDを決定します。LDAP準拠のサーバーとUnboundIDLDAPSDKはどちらの方法もサポートします。拡張要求は接続でいつでも使用できますが(who am i?認証IDに拡張要求を使用する権限がある場合)authorization identity request control、バインド要求にのみ接続できます。

who am i?拡張リクエストの使用とは、 AuthDemo.javaauthorization identity request controlに示されています。

関連項目

于 2012-06-11T13:10:08.693 に答える
0

これに対する実際の解決策はないように思われるので、スクリプト/ツールの開始時にログイン情報を要求し、必要に応じてそれを使用します。

于 2012-06-18T06:46:50.420 に答える