특성을 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();
그러나 나는 속성. 내가 뭘 놓치고 있니?
편집 :
은 내가 Cas30ProxyReceivingTicketValidationFilter
에 Cas20ProxyReceivingTicketValidationFilter
을 변경해야 할 또 다른 스레드에서 읽을 수 있지만, 아무것도 변경하지 않은 :
<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>