I've been trying to upgrade from 3.x to 4.2, but I don't understand how to 
set up user attributes from cas.

In 3.x I had

<bean id="attributeRepository" class=
"org.jasig.services.persondir.support.ldap.LdapPersonAttributeDao">

in deployerConfigContext.xml and

<c:if test="${fn:length(assertion.chainedAuthentications) > 0}"> 
       <cas:attributes> 
       <c:forEach var="auth" items="${assertion.chainedAuthentications}"> 
               <c:forEach var="attr" items="${auth.principal.attributes}">
                       <c:forEach var="v" items="${attr.value}">
                               <cas:${fn:escapeXml(attr.key)}>
${fn:escapeXml(v)}</cas:${fn:escapeXml(attr.key)}>
                       </c:forEach>
               </c:forEach> 
       </c:forEach> 
       </cas:attributes> 
</c:if>


in protocol/2.0/casServiceValidationSuccess.jsp

This worked perfectly with a CAS 3.x.



And then the 4.2:

<bean id="ldapAuthenticationHandler" class=
"org.jasig.cas.authentication.LdapAuthenticationHandler"
      p:principalIdAttribute="uid"
      c:authenticator-ref="authenticator">
    <property name="principalAttributeMap">
        <map>
                <entry key="mail" value="email" />
                <entry value="givenname" key="givenName" />
                <entry value="surname" key="sn" />
                <entry value="telephone" key="telephoneNumber" />
        </map>
    </property>
</bean>



This part works. I can see from slapd and cas debug that cas really asks 
and gets those attributes from ldap.

I use a jsonServiceRegistryDao and in the config json file I have
  "attributeReleasePolicy" : {
    "@class" : "org.jasig.cas.services.ReturnAllAttributeReleasePolicy"
  }

This works too.



And then the thing I didn't figure out:

In the default deployerConfigContext.xml, there is a:
<bean id="attributeRepository" class=
"org.jasig.services.persondir.support.NamedStubPersonAttributeDao"
          p:backingMap-ref="attrRepoBackingMap" />


If I let that stay there, I get the attributes from the attrRepoBackingMap 
and not from ldap.
If I remove the attributeRepository bean completely, cas won't start:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: 
No qualifying bean of type [org.jasig.services.persondir.IPersonAttributeDao
] found for dependency: expected at least 1 bean which qualifies as 
autowire candidate for this dependency. Dependency annotations: {@org.
springframework.beans.factory.annotation.Qualifier(value=attributeRepository
)}


If I try to use 
org.jasig.services.persondir.support.ldap.LdapPersonAttributeDao 
as attributeRepository like I did with 3.x, cas won't start because
Caused by: java.lang.ClassNotFoundException: org.springframework.ldap.filter
.Filter


I think I shouldn't need to use the LdapPersonAttributeDao 
because LdapAuthenticationHandler already picks up the attributes.

What am I missing here?
What should I use as an attributeRepository?

I even tried to alias the LdapAuthenticationHandler to be 
the attributeRepository but that didn't help either.

-- 
You received this message because you are subscribed to the Google Groups "CAS 
Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
Visit this group at https://groups.google.com/a/apereo.org/group/cas-user/.

Reply via email to