Kerberos SSO с Apache и Tomcat под JDK5 - PullRequest
       23

Kerberos SSO с Apache и Tomcat под JDK5

2 голосов
/ 09 декабря 2011

Я новичок в этой аутентификации по протоколу kerberos, поэтому я попытался прочитать много инструкций по ней, но мне кажется, что я не могу найти никаких подробностей с моими ограничениями.Вот что у меня есть:

  • Сервер Active Directory, на котором пользователи проходят аутентификацию для входа на свои рабочие станции
  • Каждый конечный пользователь использует IE 7 для подключения к моему приложению интрасети
  • Сервер Apache с балансировкой нагрузки
  • Некоторые серверы Tomcats, выступающие в роли рабочих для сервера Apache.
  • на каждом коте, у меня запущено 2 сервлета jakarta, пользователи подключаются только к одному сервлету (далеея назову его сервлетом, как если бы он был только один)
  • мои коты должны работать под jdk5.не jdk6 или jdk4.это период jdk5.

Теперь я хочу, чтобы один автоматически входил в мой сервлет.По сути, мне просто нужен мой сервлет для получения принципала клиента, тогда я могу управлять остальными.Исходя из того, что я понял, у моего клиента есть билет, он запрашивает у KDC специальный билет для доступа к серверу Apache, затем пытается подключиться к серверу Apache.На основе его таблицы ключей сервер apache затем декодирует данные аутентификации и предоставляет / отказывает в доступе к указанному ресурсу.Я прав?Пожалуйста, проведите меня через это, я читаю страницы в течение 4 дней и до сих пор не знаю, какое решение является более подходящим.Я попробовал mod_auth_kerberos для Apache, но вместо того, чтобы получить билет пользователя, он спрашивает его как базовый аутентификатор.Видимо spgneo

Спасибо

1 Ответ

3 голосов
/ 19 декабря 2011

Хорошо, у меня все работает:

  1. Установите Kerberos 5 + apache 2 + mod_auth_kerb.
  2. В своей AD сгенерируйте таблицу ключей только с тем участником, который вы будете использовать для Apache,Я использую HTTP/apache.mydom.com@MYDOM.COM
  3. Поместите этот файл keytab на ваш сервер Apache и сделайте его доступным для чтения только для вашего пользователя Apache.
  4. Затем отредактируйте ваш Apache Conf с помощьюдиректива для вашего безопасного местоположения

apache.conf :

[…]
ServerName apache.mydom.com:80
[…]
LoadModule auth_kerb_module modules/mod_auth_kerb.so
[…]
<LocationMatch /secure)>
    [… some other stuff …]
    Order allow,deny
    Allow from all
    AuthType Kerberos
        AuthName "Authentification requise"
        KrbAuthRealms MYDOM.COM
        #this allows user to be saved in the request
        KrbSaveCredentials on
        #this one force Negotiate AuthType instead of basic fallback
        KrbMethodNegotiate on
        #this trim the realm from username saved in the request (request.getRemoteUser() will give you "user" instead of "user@MYDOM.COM"
        KrbLocalUserMapping on
        KrbAuthoritative on
        KrbVerifyKDC on
        Krb5Keytab /install/binaries/httpd/apache.keytab
        KrbServiceName HTTP
    require valid-user
</LocationMatch>

И одну вещь, которую я почти не смог найти в Интернете, вы должны изменитьваша конфигурация сервера tomcat (tomcat / conf / server.xml):

<Connector [... AJP connector configuration ...] request.tomcatAuthentication="false"/>

Это очень важно , потому что без него tomcat не получит никакой информации из аутентификации tomcat.Не забывайте также, что DNS действительно очень важен для установки Kerberos.Если у вас есть какие-либо проблемы, попробуйте проверить свой DNS для всех ваших серверов.

...