Проблема с настройкой прозрачной аутентификации Kerberos

  • Автор темы SergeyProtopopov
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

SergeyProtopopov

Гость
#1
Здравствуйте Уважаемые посетители форума.

У меня возник вопрос, который не могу решить уже в течение достаточно долгого времени - требуется реализовать прозрачную аутентификацию(информация из учетной записи AD) с использованием kerberos c jboss.

Существует сервер, который крутится на jboss (в тестовом варианте представляет из себя одну простую страничкку jsp), также настроена AD.

Тестовое окружение:
2 машины с OS win 2003
браузер ie7
сервер и клиент находится на разных машинах в рамках одного домена

Произведены настройки согласно:
http://spnego.sourceforge.net/spnego_jboss.html
http://msdn.microsoft.com/en-us/library/ms995329.aspx

Настроены SPN:
C:\>setspn -L <имя машины в AD>
Registered ServicePrincipalNames for CN=<имя машины в AD>,CN=Computers,DC=<имя хоста>:
host/<имя машины в AD>.<имя хоста>
host/<имя машины в AD>
HTTP/<имя машины в AD>.<имя хоста>
HTTP/<имя машины в AD>

Сделано сейчас:
В настоящий момент получилось настроить аутентификацию таким образом, что при открытии странички (http://<имя хоста>:<port>/<context>) появляется окошко ввода логин-пароль; вход на страничку разрешается, если логин и пароль совпадают с одной из учетных записей в AD.


При этом в логе jboss отображается:
17:25:45,640 ERROR [STDERR] 24.06.2010 17:25:45 net.sourceforge.spnego.SpnegoPro
vider negotiate
WARNING: Downgrade NTLM request to Basic Auth.


Необходимо:
Мне необходима прозрачная аутентификация, при которой не придется вводить логин и пароль каждый раз, данные должны извлекаться из AD.

Я предположил, что все дело в том, что тип запроса basic, поэтому я попытался отключить basic аутентификацию:

<init-param>
<param-name>spnego.allow.basic</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>spnego.prompt.ntlm</param-name>
<param-value>false</param-value>
</init-param>

Но в логе jboss появились ошибки:

18:08:09,031 ERROR [STDERR] 24.06.2010 18:08:09 net.sourceforge.spnego.SpnegoPro
vider negotiate
WARNING: Downgrade NTLM request to Basic Auth.
18:08:09,031 ERROR [[jsp]] Servlet.service() for servlet jsp threw exception
java.lang.UnsupportedOperationException: NTLM specified. Downgraded to Basic Aut
h (and/or SSL) but downgrade not supported.
at net.sourceforge.spnego.SpnegoProvider.negotiate(SpnegoProvider.java:1
46)
at net.sourceforge.spnego.SpnegoAuthenticator.authenticate(SpnegoAuthent
icator.java:198)


По всей веротности jboss пытается авторизовать при помощи basic аутентификации (которую я отключил).
(но как я понял, мне необходима negotiation аутентификация)

поэтому прошу помощи, каким образом мне действовать дальше, чтобы настроить прозрачную аутентификацию с IE 7, или банально "куда копать дальше".
 
S

SergeyProtopopov

Гость
#2
удалось подключить negotiation аутентификацию, но теперь выдает ошибку

exception

javax.servlet.ServletException: GSSException: Failure unspecified at GSS-API level (Mechanism level: Checksum failed)
net.sourceforge.spnego.SpnegoHttpFilter.doFilter(SpnegoHttpFilter.java:233)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:9
6)


root cause

GSSException: Failure unspecified at GSS-API level (Mechanism level: Checksum failed)
sun.security.jgss.krb5.Krb5Context.acceptSecContext(Krb5Context.java:741)
sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:323)
sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:267)
sun.security.jgss.spnego.SpNegoContext.GSS_acceptSecContext(SpNegoContext.java:8
74)
sun.security.jgss.spnego.SpNegoContext.acceptSecContext(SpNegoContext.java:541)
sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:323)
sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:267)
net.sourceforge.spnego.SpnegoAuthenticator.doSpnegoAuth(SpnegoAuthenticator.java
:371)
net.sourceforge.spnego.SpnegoAuthenticator.authenticate(SpnegoAuthenticator.java
:210)
net.sourceforge.spnego.SpnegoHttpFilter.doFilter(SpnegoHttpFilter.java:229)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:9
6)




кто знает, как можно исправить ошибку без проведения специальной операции генерации ключей при помощи ktpass, обращаясь только к AD?
 
S

SergeyProtopopov

Гость
#3
Жаль, но вероятно никто из посетителей данного форума настолько глубоко не занимался данным вопросом.

Однако проблема все еще актуальна, может кто-то предложит какой-то свой вариант решения задачи всплывающего окошка в IE.
Сделано:
Всплывающее окошко в IE необходимо заполнять вручную данными из Active Directory
Необходимо:
Если пользователь залогинен в домене, необходимо открывать доступ к серверу jboss без запроса, в ином случае - запрещать доступ.


Буду благодарен любым вариантам решения данной задачи. Причем не обязательно приводить решение, просто подскажите возможные варианты решения задачи
Заранее спасибо! :)
 

andrey01

New Member
11.07.2010
1
0
#4
у меня получилось с библиотекой jboss-negotiation
брал SP3 из SVN исходники. То что дают скачать SP2 в бинарнике - не пробовал, т.к. в SP3 решена проблема с клиентом под вистой


протестировал в такой конфигурации:

сервер АД - Windows 2008 R2
сервер приложений JBoss 5.1 под Windows 7, jdk 1.6.20
клиент 1 - windows 7 с IE8 и FF 3.6
клиент 2 - windows XP с IE8
 
Статус
Закрыто для дальнейших ответов.