Возможность извлечения атрибутов из внешних хранилищ данных присутствует в CAS со времен 3.x. Эта функциональность была и по сей день обеспечивается проектом Apereo под названием Person Directory, который является Java структурой для разрешения лиц и атрибутов из различных базовых источников. Он состоит из набора компонентов, которые извлекают, кэшируют, разрешают, объединяют и объединяют атрибуты человека из JDB C, LDAP и других. CAS пытается использовать преимущества этой структуры с помощью концепции, называемой PrincipalResolver
, цель которой состоит в создании окончательного идентифицируемого аутентифицированного принципала для CAS, который содержит несколько атрибутов внутри него, извлеченных из источников хранилища атрибутов. Это означало, что, например, можно выполнить аутентификацию с помощью SPNE GO в одном запросе, а затем развернуть запрашиваемый LDAP, реляционную базу данных и сценарий Groovy, чтобы получить атрибуты для разрешенного принципала и объединить все результаты в итоговую коллекцию.
Обратите внимание, что в большинстве случаев, как в случае прямой аутентификации LDAP и начиная с CAS 4.x, механизм аутентификации был усовершенствован, чтобы иметь возможность получать и разрешать атрибуты из источника аутентификации, что устраняет необходимость настройки отдельного репозитория / распознавателя атрибутов, особенно если аутентификация и источник атрибута совпадают. Использование отдельных распознавателей и источников требуется только в тех случаях, когда источники различны или когда необходимо рассмотреть более сложные варианты использования разрешения атрибутов, такие как каскадирование, объединение и т. Д. c.
Чтобы настроить использование CAS внешний LDAP для хранилищ атрибутов, используйте:
cas.authn.attribute-repository.ldap[0].attributes.uid=uid
cas.authn.attribute-repository.ldap[0].attributes.displayName=displayName
cas.authn.attribute-repository.ldap[0].attributes.cn=commonName
cas.authn.attribute-repository.ldap[0].attributes.memberOf=memberOf
cas.authn.attribute-repository.ldap[0].ldapUrl=ldap://...
cas.authn.attribute-repository.ldap[0].useSsl=false
cas.authn.attribute-repository.ldap[0].useStartTls=false
cas.authn.attribute-repository.ldap[0].baseDn=dc=example,dc=edu
cas.authn.attribute-repository.ldap[0].searchFilter=uid={0}
cas.authn.attribute-repository.ldap[0].bindDn=...
cas.authn.attribute-repository.ldap[0].bindCredential=...