0
現在、LDAPを使用してユーザーを認証するアプリケーションを開発しています。正常なログインの基準は、正しいユーザ名、パスワード、およびグループ(TEST-FFSUS-CALBR-USER)に基づいています。LDAPにContainerCriteriaを使用して特定のグループがあるかどうかを確認する際の問題
ユーザー名とパスワードの条件では正常にログインできましたが、グループの条件では正常にログインできませんでした。アプリケーション・コンテキストで
@Resource
LdapTemplate ldapTemplate;
public boolean login(String username, String password) {
try {
ContainerCriteria searchCriteria = getLdapFilterCriteria(username);
boolean result = ldapTemplate.authenticate("OU=User,OU=fo-id,DC=feefusde,DC=rootdom,DC=net",
searchCriteria.filter().encode(), password);
return result;
} catch (Exception e) {
return false;
}
}
private ContainerCriteria getLdapFilterCriteria(String usernameOrEmail) {
ContainerCriteria objectClassCriteria = LdapQueryBuilder.query().base("DC=rootdom,DC=net").where("objectClass")
.is("user");
ContainerCriteria mailCriteria = LdapQueryBuilder.query().where("mail").is(usernameOrEmail);
ContainerCriteria cnCriteria = LdapQueryBuilder.query().where("CN").is(usernameOrEmail);
ContainerCriteria roleCriteria = LdapQueryBuilder.query().where("memberOf=CN").is("TEST-FFSUS-CALBR-USER");
ContainerCriteria userByMailOrCnCriteria = mailCriteria.or(cnCriteria);
ContainerCriteria searchCriteria = objectClassCriteria.and(userByMailOrCnCriteria).and(roleCriteria);
return searchCriteria;
}
:後
は、この目的のために使用するコードです
<bean id="ldapTemplate" class="org.springframework.ldap.core.LdapTemplate">
<property name="contextSource">
<bean class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
<constructor-arg>
<value>ldap://urlofldap:portno</value>
</constructor-arg>
<property name="userDn" value="${ldap.username}" />
<property name="password" value="${ldap.password}" />
</bean>
</property>
</bean>
は、問題の上に解決する方法はあります。 ?
Iはすでに "ここでLdapQueryBuilder.queryを()(" のmemberOf ")試み(TEST-FFSUS-CALBR-USER")である。 ";" が働いたdidntの。 –
@JobyWilsonMathewsもちろん動作しませんでした!あなたが試したものが間違っています。「TEST-FFSUS-CA LBR-USER」と「CN = TEST-FFSUS-CALBR-USER、OU = roles、DC = feefusde、DC = rootdom、DC = net "'?私は明らかに 'memberOf'属性がグループ**の識別名**と一致する必要があります。 '' TEST-FFSUS-CA LBR-USER "'はdnではありません。また、あなたの質問では、フィルタ 'where(" memberOf = CN ")と言及し、dnパラメータに関係なく動作しません。 – EricLavault
@JobyWilsonMathewsだから、あなたは質問をして、答えとは何の関係もない何かを試してみて、それはうまくいかないと言っていますか? – EricLavault