2013-09-05 8 views
1

Я пытаюсь подключиться к tomcat с активным пользователем каталога. Если пароль в виде простого текста, как следующее:Tomcat 6 - проверка подлинности через активный каталог с зашифрованным паролем

<Realm className="org.apache.catalina.realm.JNDIRealm" 
connectionURL="ldap://localhost:389"  
connectionName="user_name" 
connectionPassword="password"  
userBase="OU=blabla,DC=aaa,DC=com"  
userSubtree="true"  
userSearch="(sAMAccountName={0})" 
userRoleName="memberOf" 
roleBase="OU=blabla,DC=aaa,DC=com" 
roleName="cn"  
roleSubtree="true"   
roleSearch="(member={0})"  /> 

аутентификации в порядке. НО, я не хочу пароль в моем файле конфигурации.

Я попытался следующие:

<Realm className="org.apache.catalina.realm.JNDIRealm" 
connectionURL="ldap://localhost:389"  
digest="MD5" 
connectionName="user_name" 
connectionPassword="encrypted_password"   
userBase="OU=blabla,DC=aaa,DC=com"  
userSubtree="true"  
userSearch="(sAMAccountName={0})" 
userRoleName="memberOf" 
roleBase="OU=blabla,DC=aaa,DC=com" 
roleName="cn" 
roleSubtree="true"  
roleSearch="(member={0})"  /> 

но аутентификация не удается.
Я не нашел никакого решения. я действительно признателен за любую помощь

благодарю вас

+0

Ваши пользователи пользуются услугой и не используют Basic auth. Используйте SPNEGO с AD: http://tomcatspnegoad.sourceforge.net/ –

ответ

0

Я думаю, что ваша единственная альтернатива подкласс JNDIRealm и сделать новый атрибут, который будет иметь какое-то зашифрованное соединение паролем. Пароль не может быть хэширован (с MD5, как вы указали), потому что хеши в одностороннем порядке - нет отмены хэша - и Tomcat нуждается в пароле в своей оригинальной неформатированной форме для аутентификации против установки AD.

Если вы используете обратимое шифрование в вашем подклассе JNDIRealm, тогда, когда Tomcat нуждается в пароле, вы можете расшифровать пароль и передать его.

+0

Я сделал, как вы предложили. Я создал подкласс для JNDIrealm, который переопределяет getConnectionPassword. Он получает шифрованный пароль и расшифровывает его. Теперь я могу подключиться. Но теперь что-то изменилось, и когда я пытаюсь выполнить вход с пользователем, аутентификация терпит неудачу. Я проверил исходный код, я не вижу связи между getConnectionPassword и getUserPassword. Я действительно попрошу вас помочь. Я не могу войти в систему с пользователем – Inbal

+0

Не видя конкретной настройки, я не знаю, насколько больше я могу помочь ... Например, я не знаю специфическую конфигурацию AD ... но я скажу, что при Подобно этому, мне нравится вытаскивать Wireshark и просматривать сообщения (или попытки) между Tomcat и сервером AD, посмотреть, что происходит на самом деле. Попробуй, может быть? Кроме того, попробуйте добавить 'adCompat =" true "' в конфигурацию Realm ... он действует несколько иначе для Active Directory и другого LDAP. – dcsohl

 Смежные вопросы

  • Нет связанных вопросов^_^