Ответ 1
Я делаю несколько предположений здесь, поэтому, пожалуйста, дайте мне знать, если я не в теме:
- Вы используете версию CAS между 3.3.2 и 3.4.8.
- Вы хотите связать CAS в Active Directory с помощью LDAP (для Kerberos или SPNEGO см. ссылки ниже) с помощью Bind LDAP Handler (для FastBind см. ссылки ниже).
- Вы знакомы с созданием CAS из источника через Maven.
Предпосылка
- Если вы собираетесь связываться с AD через "ldaps://" (в отличие от "ldap://" ), JVM на вашем сервере CAS должен доверять SSL-сертификату вашего сервера Active Directory. Если вы используете самозаверяющий сертификат для AD, вам нужно импортировать его в хранилище доверия JVM.
Резюме
В вашем исходном дереве CAS вам необходимо внести изменения в следующие файлы:
- саз-сервер WebApp/pom.xml
- КАС-сервера веб-приложение/SRC/Главный/WebApp/WEB-INF/deployerConfigContext.xml
Подробнее
pom.xml:
Добавьте в <dependencies>
следующее:
<!-- LDAP support -->
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>cas-server-support-ldap</artifactId>
<version>${project.version}</version>
</dependency>
deployerConfigContext.xml:
-
Переконфигурируйте ваши помощники аутентификации:
- Ищите:
<property name="authenticationHandlers">
. Внутри это<list>
, и внутри это (возможно) два элемента<bean ...>
-
Сохраните это:
<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref="httpClient" />
-
Другой
<bean>
(опять же, вероятно) соответствует текущему методу аутентификации, который вы используете. (Я не понимаю на этот вопрос, так как существует несколько способов CAS может сделать это без использования внешних сервисов. По умолчанию используется SimpleTestUsernamePasswordAuthenticationHandler, это аутентифицируется, если имя пользователя равно паролю). Замените это<bean>
на:<!-- LDAP bind Authentication Handler --> <bean class="org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler"> <property name="filter" value="uid=%u" /> <property name="searchBase" value="{your LDAP search path, e.g.: cn=users,dc=example,dc=com}" /> <property name="contextSource" ref="LDAPcontextSource" /> <property name="ignorePartialResultException" value="yes" /> <!-- fix because of how AD returns results --> </bean>
-
Измените свойство "searchBase" в соответствии с конфигурацией AD.
- Ищите:
-
Создайте источник контекста для LDAP:
-
Добавьте это где-нибудь внутри корневого элемента
<beans>
:<bean id="LDAPcontextSource" class="org.springframework.ldap.core.support.LdapContextSource"> <property name="pooled" value="false"/> <property name="urls"> <list> <value>{URL of your AD server, e.g.: ldaps://ad.example.com}/</value> </list> </property> <property name="userDn" value="{your account that has permission to bind to AD, e.g.: uid=someuser, dc=example, dc=com}"/> <property name="password" value="{your password for bind}"/> <property name="baseEnvironmentProperties"> <map> <entry> <key> <value>java.naming.security.authentication</value> </key> <value>simple</value> </entry> </map> </property> </bean>
-
Измените "urls", "userDn" и "password" соответственно.
-
Восстановите cas-server-webapp и попробуйте.