2016-09-21 2 views
0

Ich kann die Attribute nicht an den CAS-Client erhalten. Ich habe einige Nachforschungen angestellt und versucht herauszufinden, wie man Attribute an einen CAS-Client weiterleitet.CAS: Attribute werden nicht beim CAS-Client angezeigt

Im cas.properties stelle ich dies:

cas.principal.resolver.persondir.return.null=false 

ich diese Abhängigkeit hinzugefügt:

<dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-collections4</artifactId> 
     <version>4.1</version> 
    </dependency> 

Das ist mein servicesRegistry.conf:

{ 
    "services":[ 
     { 
      "id":1, 
      "serviceId":"https://localhost:8743/**", 
      "name":"HELLO_WORLD", 
      "description":"WEBAPP FOR TESTS", 
      "theme":"my_example_webapp", 
      "allowedToProxy":true, 
      "enabled":true, 
      "ssoEnabled":true, 
      "anonymousAccess":false, 
      "evaluationOrder":1, 
      "attributeReleasePolicy" : { 
       "@class" : "org.jasig.cas.services.ReturnAllowedAttributeReleasePolicy", 
       "principalAttributesRepository" : { 
        "@class" : "org.jasig.cas.authentication.principal.DefaultPrincipalAttributesRepository" 
       }, 
       "allowedAttributes" : [ "java.util.ArrayList", [ "cn", "description", "telephoneNumber" ] ] 
      } 
     }, 

     { 
      "id":2, 
      "serviceId":"https://yahoo.com", 
      "name":"YAHOO", 
      "description":"Test service with exact match on its serviceId and optional extra attributes", 
      "extraAttributes":{ 
       "someCustomAttribute":"Custom attribute value" 
      }, 
      "evaluationOrder":2 
     } 
    ] 
} 

Mein ldapAuthenticationHandler sieht wie folgt aus:

<bean id="ldapAuthenticationHandler" 
     class="org.jasig.cas.authentication.LdapAuthenticationHandler" 
       p:principalIdAttribute="cn" 
       c:authenticator-ref="authenticator"> 
      <property name="principalAttributeMap"> 
       <map> 
        <entry key="cn" value="cn" /> 
        <entry key="description" value="description" /> 
        <entry key="telephoneNumber" value="telephoneNumber" /> 
       </map> 
      </property> 
    </bean> 

Und mein authenticationHandlersResolvers wie folgt aus:

<util:map id="authenticationHandlersResolvers"> 
    <entry key-ref="ldapAuthenticationHandler" value="#{null}" /> 
</util:map> 

Und hier ist mein attributeRepository:

<bean id="attributeRepository" class="org.jasig.services.persondir.support.NamedStubPersonAttributeDao" 
      p:backingMap-ref="attrRepoBackingMap" /> 

<util:map id="attrRepoBackingMap"> 
     <entry key="cn" value="cn" /> 
     <entry key="description" value="description" /> 
     <entry key="telephoneNumber" value="telephoneNumber" /> 
     <entry> 
      <key><value>memberOf</value></key> 
      <list> 
       <value>faculty</value> 
       <value>staff</value> 
       <value>org</value> 
      </list> 
     </entry> 
    </util:map> 

Und auf der Client-Seite ich tun, um diese (bearbeitete Version mit aus null Scheck usw.):

AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal(); 
final Map attributes = principal.getAttributes(); 
Iterator attributeNames = attributes.keySet().iterator(); 
String attributeName = (String) attributeNames.next(); 

Allerdings bekomme ich keine Attribute. Was vermisse ich?

EDIT:

ich in einem anderen Thread gelesen, die ich habe Cas20ProxyReceivingTicketValidationFilter-Cas30ProxyReceivingTicketValidationFilter zu ändern, aber das hat nichts ändern:

<filter> 
     <filter-name>CAS Validation Filter</filter-name> 
      <filter-class>org.jasig.cas.client.validation.Cas30ProxyReceivingTicketValidationFilter</filter-class> 

     <init-param> 
      <param-name>casServerUrlPrefix</param-name> 
      <param-value>https://localhost:8943/cas</param-value> 
     </init-param> 
     <init-param> 
      <param-name>serverName</param-name> 
      <param-value>https://localhost:8743</param-value> 
     </init-param> 
     <init-param> 
      <param-name>redirectAfterValidation</param-name> 
      <param-value>true</param-value> 
     </init-param> 
     <init-param> 
      <param-name>useSession</param-name> 
      <param-value>true</param-value> 
     </init-param> 
    </filter> 

Antwort

0

Mein Problem war die servicesRegistry.conf. Es hat aus irgendeinem Grund nicht funktioniert und ich konnte nicht herausfinden warum.

Wenn Sie Problem der servicesRegistry.conf Datei haben, empfehle ich Ihnen diese verwenden in Ihrem deployerConfigContext.xml:

<bean id="serviceRegistryDao" class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl"> 
     <property name="registeredServices"> 
      <list> 
       <bean class="org.jasig.cas.services.RegexRegisteredService" 
         p:id="5" p:name="https.all" p:description="Allow HTTPS connection" 
         p:serviceId="^https://.*" p:evaluationOrder="5" > 

        <property name="attributeReleasePolicy"> 
         <bean class="org.jasig.cas.services.ReturnAllAttributeReleasePolicy" /> 
        </property> 
       </bean> 
      </list> 
     </property> 
    </bean> 

Dadurch werden alle Dienste ermöglichen, die eine URL, die die Regex ^https://.* passt.

Verwandte Themen