WORKERS AHEAD!
You are viewing the development documentation for the Apereo CAS server. The functionality presented here is not officially released yet. This is a work in progress and will be continually updated as development moves forward. You are most encouraged to test the changes presented.
Attribute Repository Filtering
Principal attribute repositories can consult attribute sources defined and controlled by Person Directory. Assuming a JSON attribute
repository source is defined with the identifier MyJsonRepository
, the following definition disregards all previously-resolved attributes and contacts MyJsonRepository
again to fetch attributes and cache them for 30
minutes.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"@class" : "org.apereo.cas.services.CasRegisteredService",
"serviceId" : "^(https|imaps)://.*",
"name" : "HTTPS and IMAPS",
"id" : 1,
"attributeReleasePolicy" : {
"@class" : "org.apereo.cas.services.ReturnAllAttributeReleasePolicy",
"principalAttributesRepository" : {
"@class" : "org.apereo.cas.authentication.principal.cache.CachingPrincipalAttributesRepository",
"timeUnit" : "MINUTES",
"expiration" : 30,
"ignoreResolvedAttributes": true,
"attributeRepositoryIds": ["java.util.HashSet", [ "MyJsonRepository" ]],
"mergingStrategy" : "MULTIVALUED"
}
}
}
Here is a similar example with caching turned off for the service where CAS attempts to combine previously-resolved attributes with the results from the attribute
repository identified as MyJsonRepository
. The expectation is that the attribute source MyJsonRepository
is excluded from principal resolution during the authentication phase
and should only be contacted at release time for this service:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"@class" : "org.apereo.cas.services.CasRegisteredService",
"serviceId" : "^(https|imaps)://.*",
"name" : "HTTPS and IMAPS",
"id" : 1,
"attributeReleasePolicy" : {
"@class" : "org.apereo.cas.services.ReturnAllAttributeReleasePolicy",
"principalAttributesRepository" : {
"@class" : "org.apereo.cas.authentication.principal.DefaultPrincipalAttributesRepository",
"ignoreResolvedAttributes": false,
"attributeRepositoryIds": ["java.util.HashSet", [ "MyJsonRepository" ]],
"mergingStrategy" : "MULTIVALUED"
}
}
}