Tomcat + Active Directory
Не думаю, что кому-то может такое понадобиться, но мало ли.
Итак задача сделать логин с помощью учетной записи из Active Directory в приложение работающее на Apache Tomcat.
Tomcat 5.5 + Example Apps(для тестирования)
- Создаем в Active Directory группу Tomcat Group.
- Создаем ключ для SSL соединения.
keytool -genkey -alias tomcat -keyalg RSA
По умолчанию ключ надо создавать с паролем changeit, а положить(сделать линк) ключ в папку с томкатом.
ln -s ~/.keystore /usr/share/tomcat5.5/.keystore
или
cp ~/.keystore /usr/share/tomcat5.5/.keystore
если вам не нравиться такой пароль и путь сделайте его какой нравиться, но в server.xml в <Connector> его надо будет указать.
keystoreFile=»/путь/к/.keystore» keystorePass=»дер_пароль» - Меняем server.xml добавяем + разкоментируем следующие строчки.
Раскоментируем строчки про SSL:<Connector port=»8443″ maxHttpHeaderSize=»8192″
maxThreads=»150″ minSpareThreads=»25″ maxSpareThreads=»75″
enableLookups=»false» disableUploadTimeout=»true»
acceptCount=»100″ scheme=»https» secure=»true»
clientAuth=»false» sslProtocol=»TLS» />И дописываем следующие строчки:
<Realm className=»org.apache.catalina.realm.JNDIRealm» debug=»99″
connectionURL=»ldap://192.168.1.1:389″ <!– Доменный контроллер –>
connectionName=»CN=ldap,OU=Users,DC=trex,DC=com» <!– Пользователь для авторизации,права по минимум –>
connectionPassword=»ldap» <!– Пароль–>
referrals=»follow»
userBase=»OU=Users,DC=trex,DC=com» <!–Место пользователей–>
userSearch=»(sAMAccountName={0})»
userSubtree=»true»
roleBase=»OU=Groups,DC=trex,DC=com» <!– Место нахождение группы, которая сможет–>
roleName=»name»
roleSubtree=»true»
roleSearch=»(member={0})»
/>
В некоторых местах пишут, что надо все остальные Realm закоментировать. Я не коментировал, работает. - Идем в web.xml приложения которое требудет авторизации. В моем случае это. /usr/share/tomcat5.5-webapps/jsp-examples/WEB-INF/web.xml. Убираем там такие же уже существующие теги и добавляем свои вот такие.<security-constraint>
<display-name>npuMepbI</display-name>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.html</url-pattern>
<url-pattern>*.xml</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee> <!—Перекидывает на SSL порт –>
</user-data-constraint>
<auth-constraint>
<role-name>Tomcat Group</role-name> <!—Название группы в Active Directory –>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/security/protected/login.jsp</form-login-page> <!—логин скрипт, есть в examples –>
<form-error-page>/security/protected/error.jsp</form-error-page> <!— error скрипт, есть в examples –>
</form-login-config>
</login-config>
<security-role>
<description>Tomcat Group Description</description> <!— Описание группы –>
<role-name>Tomcat Group</role-name> <!—Название группы в Active Directory –>
</security-role>
- Перезапускаем Tomcat, пробуем зайти на страницу с примерами. Первое, что должно броситься в глаза, это https и изменившийся порт. Потом будет приглашение ввести пароль. Если все сделано правильно, загрузиться страница с примерами.
Удачной настройки.