2016-09-21 13 views
0

특성을 CAS 클라이언트에 가져올 수 없습니다. 몇 가지 조사를 수행하고 CAS 클라이언트에 특성을 전달하는 방법을 찾으려고했습니다. 나는이 종속성 추가CAS : CAS 클라이언트에 특성이 표시되지 않습니다.

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

:

cas.properties에서 나는이 설정이

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

입니다 내 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 
     } 
    ] 
} 

ldapAuthenticationHandler은 다음과 같습니다

<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> 

그리고 이런 내 authenticationHandlersResolvers :

<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> 

그리고 클라이언트 측에서

내가 (교체 아웃 null 검사 등으로 편집 된 버전)이 작업을 수행 :

여기

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

그리고 내 attributeRepository입니다

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

그러나 나는 속성. 내가 뭘 놓치고 있니?

편집 :

은 내가 Cas30ProxyReceivingTicketValidationFilterCas20ProxyReceivingTicketValidationFilter을 변경해야 할 또 다른 스레드에서 읽을 수 있지만, 아무것도 변경하지 않은 :

<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> 

답변

0

내 문제가 servicesRegistry.conf했다. 어떤 이유로 작동하지 않아서 그 이유를 알 수 없었습니다. 당신은 문제가 servicesRegistry.conf 파일을 사용하는 경우

, 나는 당신이 당신의 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> 

이 정규식 ^https://.*를 맞는 URL이있는 모든 서비스를 허용합니다.