Привет, я использую CAS для единого входа в моем приложении (весеннее приложение). Мне удалось войти в систему с CAS, я получаю только имя пользователя, но не адрес электронной почты или другие атрибуты от CAS.Атрибуты пользователя LDAP от CAS
Для аутентификации в стороне CAS я использую LDAP и настроен в deployerConfigContext.xml ниже код
В AuthenticationManager добавлен код ниже
<property name="credentialsToPrincipalResolvers">
<list>
<bean class="org.jasig.cas.authentication.principal.CredentialsToLDAPAttributePrincipalResolver">
<property name="credentialsToPrincipalResolver">
<bean
class="org.jasig.cas.authentication.principal.UsernamePasswordCredentialsToPrincipalResolver" />
</property>
<property name="filter" value="sAMAccountName=%u" />
<property name="principalAttributeName" value="sAMAccountName" />
<property name="searchBase" value="DC=test,DC=com" />
<property name="contextSource" ref="LDAPcontextSource" />
<property name="attributeRepository">
<ref bean="attributeRepository" />
</property>
</bean>
</list>
</property>
И использовали LdapPersonAttributeDao
<bean id="attributeRepository"
class="org.jasig.services.persondir.support.ldap.LdapPersonAttributeDao">
<property name="baseDN" value="cn=test,ou=test,dc=test,dc=com" />
<property name="contextSource" ref="LDAPcontextSource" />
<property name="requireAllQueryAttributes" value="true" />
<property name="queryAttributeMapping">
<map>
<entry key="username" value="sAMAccountName" />
</map>
</property>
<property name="resultAttributeMapping">
<map>
<entry key="displayName" value="cn" />
<entry key="mail" value="email" />
</map>
</property>
</bean>
Я прочитал несколько сообщений и обнаружил, что для добавления свойства allowedAttributes в приведенной ниже конфигурации находится конфигурация
<bean id="serviceRegistryDao" class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl">
<property name="registeredServices">
<list>
<bean class="org.jasig.cas.services.RegisteredServiceImpl">
<property name="id" value="0" />
<property name="name" value="HTTP" />
<property name="description" value="Only Allows HTTP Urls" />
<property name="serviceId" value="http://**" />
<property name="allowedAttributes">
<list>
<value>cn</value>
<value>mail</value>
</list>
</property>
</bean>
В моей стороне приложения я написал класс, чтобы получить имя пользователя и адрес электронной почты ниже приведен код
public class RestAuthenticationUserDetailsService implements AuthenticationUserDetailsService<CasAssertionAuthenticationToken> {
@Override
public UserDetails loadUserDetails(CasAssertionAuthenticationToken token)
throws UsernameNotFoundException {
Object principal = token.getPrincipal();
String username = token.getName();
LOGGER.info(username);
Collection<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
return new User(username, "", authorities);
}
}
Я получал имя пользователя, но не получает другие атрибуты, такие как электронная почта. Когда я отлаживаю, я вижу, что основные атрибуты пустые.
Может кто-нибудь помочь мне в этом, как получить атрибуты для моего приложения Заранее спасибо.