Attribute Resolution

Attribute resolution strategies are controlled by the Person Directory family of components. The framework supports both LDAP and JDBC attribute resolution, caching, attribute aggregation from multiple attribute sources, etc.

:information_source: Default Caching Policy

By default, attributes are cached to the length of the SSO session. This means that while the underlying component provided by Person Directory may have a different caching model, attributes by default and from a CAS perspective will not be refreshed and retrieved again on subsequent requests as long as the SSO session exists.

Actuator Endpoints

The following endpoints are provided by CAS:

 Resolve principal attributes for user.

 Remove cached attributes in the attribute repository for user.

 Display cached attributes in the attribute repository for user. If attributes are found in the cache, they are returned. Otherwise, attribute repositories will be contacted to fetch and cache person attributes again.

 Display available attribute repositories and their order of execution.


Person Directory

A framework for resolving persons and attributes from a variety of underlying sources. It consists of a collection of components that retrieve, cache, resolve, aggregate, merge person attributes from JDBC, LDAP and more.

The following settings and properties are available from the CAS configuration catalog:

The configuration settings listed below are tagged as Required in the CAS configuration metadata. This flag indicates that the presence of the setting may be needed to activate or affect the behavior of the CAS feature and generally should be reviewed, possibly owned and adjusted. If the setting is assigned a default value, you do not need to strictly put the setting in your copy of the configuration, but should review it nonetheless to make sure it matches your deployment expectations.

  • cas.person-directory.principal-transformation.groovy.location=
  • The location of the resource. Resources can be URLs, or files found either on the classpath or outside somewhere in the file system.

    In the event the configured resource is a Groovy script, especially if the script is set to reload on changes, you may need to adjust the total number of inotify instances. On Linux, you may need to add the following line to /etc/sysctl.conf: fs.inotify.max_user_instances = 256.

    You can check the current value via cat /proc/sys/fs/inotify/max_user_instances.

    In situations and scenarios where CAS is able to automatically watch the underlying resource for changes and detect updates and modifications dynamically, you may be able to specify the following setting as either an environment variable or system property with a value of false to disable the resource watcher: org.apereo.cas.util.io.PathWatcherService.

    org.apereo.cas.configuration.model.core.authentication.GroovyPrincipalTransformationProperties.

    How can I configure this property?

    The configuration settings listed below are tagged as Optional in the CAS configuration metadata. This flag indicates that the presence of the setting is not immediately necessary in the end-user CAS configuration, because a default value is assigned or the activation of the feature is not conditionally controlled by the setting value. In other words, you should only include this field in your configuration if you need to modify the default value or if you need to turn on the feature controlled by the setting.

  • cas.person-directory.active-attribute-repository-ids=*
  • Activated attribute repository identifiers that should be used for fetching attributes if attribute resolution is enabled. The list here may include identifiers separated by comma.

    org.apereo.cas.configuration.model.core.authentication.PersonDirectoryPrincipalResolverProperties.

    How can I configure this property?

  • cas.person-directory.attribute-repository-selection=
  • Control the behavior of the attribute repository selection by authentication method or handler. The map here is keyed by the authentication handler name, and the value is the attribute repository identifiers separated by comma. When the authentication handler is executed, the attribute repositories assigned to this handler will be selected to fetch attributes. Note that the resolution engine will always favor attribute repositories assigned to the service definition, if any and as part of its authentication policy, over this global setting.

    org.apereo.cas.configuration.model.core.authentication.PersonDirectoryPrincipalResolverProperties.

    How can I configure this property?

  • cas.person-directory.attribute-resolution-enabled=undefined
  • Whether attribute repositories should be contacted to fetch person attributes. Defaults to true if not set. Available values are as follows:

    • TRUE: Constant to represent the true state.
    • FALSE: Constant to represent the false state.
    • UNDEFINED: Constant to represent the undefined state.

    org.apereo.cas.configuration.model.core.authentication.PersonDirectoryPrincipalResolverProperties.

    How can I configure this property?