0

2 日前にこの要件を取得したばかりで、初めて LDAP (openDS) を使用しています。現状では、研究開発に費やす時間は非常に限られています。開発者ガイドと openDS の SDK Api をできる限り調べました。

基本的に、私は非常に単純な要件を持っています。「 user-id 」が提供され、それを使用して、このユーザーが LDAP で使用可能なグループ (私が定義) に属しているかどうかを認証する必要があります。

私はこのコードスニペットを行うことができました:

public void getGroup(String userId) {
    Connection connection = new LDAPConnection().getConnection();
    try {
        // No explicit bind yet so we remain anonymous for now.
        SearchResultEntry entry;
        entry = connection.searchSingleEntry("ou=Groups,dc=example,dc=com", 
                                                                SearchScope.WHOLE_SUBTREE, 
                                                                "(uniqueMember=" + "uid="+userId+", ou=People, dc=example,dc=com" + ")", 
                                                                "cn");
        String cn = entry.getAttribute("cn").firstValueAsString();
        System.out.println("Hello, " + cn + "!");
    } catch (ErrorResultException e) {
        e.getMessage();
    } finally {
        closeConnection(connection);
    }
}

検索結果を受け取った場合、ユーザーはそうでない場合はグループに属しています。これがこれを達成する方法かどうかはわかりません。「isMemberOf」のようなものも見ましたが、API がそのような種類のメソッドを提供するのか、それとも別のものなのかはわかりません。

どんな助けでも大歓迎です。ありがとう。

4

2 に答える 2

1

上記の検索では、グループのcnが返されます。ユーザーIDが与えられ、そのユーザーがよく知られたグループに属していることを確認する必要がある場合は、フィルター "(isMemberOf =

グループの一部である(&(uid =)(isMemberOf =)を検索した場合。

敬具、

ルドビッチ。

于 2012-06-04T07:27:54.193 に答える
1

LDAP クライアントは、次のフィルタを使用して検索要求をサーバーに送信する必要があります。

'(isMemberOf=<the distinguished name of the entry>)'

適切な基本オブジェクト、フィルター、および要求された属性。isMemberOfこれは、サーバーで仮想属性が有効になっていることを前提としています。

相対識別名コンポーネントのみが使用可能な場合、LDAP クライアントは識別名を検索する必要があります。この場合は(<attribute-type>=<userid>>)(たとえば、'(uid=user.1)') を使用1.1し、要求属性を検索すると、属性が返されません。識別名は、一致したエントリごとに常に返されます。次に、 でフィルターを作成しisMemberOf、再度検索します。

こちらもご覧ください

于 2012-06-03T16:02:54.207 に答える