ユーザーのすべてのグループを読み込んでリストに入れたいと思います。 LDAPクエリですSpring LdapTemplate - 同じ属性名で値を読み取るにはどうすればいいですか
:
のldapsearch -h [サーバ名] -p [ポート] "OU =人、OU = FOO、O =バー、C = comの" -bサブ-s " (ID = 123)」
どのように結果は次のようになります。
ID:123
名:ジョン
FIRSTNAME:BAKER
GROUPLIST:CN = GROUP1.COM、CN = GROUPS、OU = FOO、O = BAR、C = COM
GROUPLIST:CN = GROUP2.COM、CN =グループ、 ou = FOO、o = BAR、c = COM
私はSpringのLdapTemplate実装を使用します。それはうまく動作しますが、同じ名前の複数の属性を持つ場合(上記の「grouplist」を参照)、結果をどのように処理できますか?私はIncrementalAttributesMapperを使用しようとしましたが、うまく動作しませんでした。
public MyUser getUser(String userId) {
LdapQuery searchQuery = LdapQueryBuilder.query()
.base("ou=people,ou=foo,o=bar,c=com")
.searchScope(SearchScope.SUBTREE)
.filter(new EqualsFilter("id", userId));
return ldapTemplate.search(searchQuery, getUserAttributesMapper());
}
public static AttributesMapper getUserAttributesMapper() {
return attributes -> {
IncrementalAttributesMapper groupAttributesMapper = new DefaultIncrementalAttributesMapper("grouplist");
MyUser myUser = MyUser.builder()
.id(attributes.get("id").get().toString())
.name(attributes.get("name").get().toString())
.firstname(attributes.get("firstname").get().toString())
.groupIds(groupAttributesMapper.getValues("cn"))
.build();
return myUser;
};
}
私は次のように属性を読み取ろう:
attributes.get("grouplist").get().toString()
私は最初のグループを取得:
GROUPLIST:CN = GROUP1.COM、CN =グループ、OUを= FOO、o = BAR、c = COM
ご協力いただきありがとうございます!私はいくつかのメンバーが含まれるグループを持っていたその場合
List values = DefaultIncrementalAttributesMapper.lookupAttributeValues(ldapTemplate, baseDN, "member");
:
'attributes.get(" group list ")'は反復処理できるコレクションを返します。 – EJP