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

  • Вопрос

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

    У меня возник вопрос, который не могу решить уже в течение достаточно долгого времени - требуется реализовать прозрачную аутентификацию(информация из учетной записи 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, или банально "куда копать дальше".

     

    24 июня 2010 г. 14:53

Все ответы

  • удалось подключить 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:96)


    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:874)
     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:96)

     


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

    25 июня 2010 г. 7:47
  • Жаль, но вероятно никто из посетителей данного форума настолько глубоко не занимался данным вопросом.

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


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

    http://bugreport.ru/content/avtomaticheskaya-avtorizatsiya-v-iis

    http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/523ae943-5e6a-4200-9103-9808baa00157.mspx?mfr=true

     


    MCPIT: Enterprise Administrator; MCT; Microsoft Security Trusted Advisor
    28 июня 2010 г. 6:57
  • к сожалению это не совсем то (точнее некоторые общие шаги полезны, но я их уже сделал)

    по автоматической авторизации в iis - "Возможно пароль спросит один раз, надо будет галку поставить сохранить пароль" тут нужно именно без запроса пароля

    не подскажете, как настроить авторизацию для других браузеров, не IE, где-то возможно необходимо прописать в реестре?

     

    29 июня 2010 г. 8:27