Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Тихая доменная авторизация в GlassFish

Anna | 3.06.2014 | нет комментариев

В данной статье я разберу каким образом дозволено реализовать тихую доменную авторизацию (Kerberos) на сервере приложений GlassFish.
Тест проводился на ПК с Windows 7 Pro SP1 (64bit), JDK 1.7.0_25(64bit) и GlassFish 4 (ver 89).
Пользоваться мы будем библиотекой SPNEGO. Данная статья собственно является переводом и адаптацией, того что вы можете обнаружить на странице библиотеки на английском языке.

Предполетная подготовка

1) Удостовериться что ваш сервер находится в домене.
2) Удостовериться что сервер приложений (GlassFish) запускается от доменного пользователя
3) Удостовериться что на руках есть логин и пароль от намеренно заведенного доменного пользователя (я применял того же пользователя что и в пункте 2)
4) Удостовериться что правильно отработает HelloKDC.java
HelloKDC.java — малое приложение которое дозволит нам осознать всё ли готово Дабы начинать полет и допустим ли полет.
В данном коде необходимо дополнить несколько строк, а именно:

// Domain (pre-authentication) account
final String username = “<Имя пользователя из третьего пункта>”;

// Password for the pre-auth acct.
final String password = “<Пароль от пользователя из третьего пункта>”;

// Name of our krb5 config file
final String krbfile = «krb5.conf»;

// Name of our login config file
final String loginfile = «login.conf»;

// Name of our login module
final String module = «spnego-client»;

Дальше необходимо добавить файлы krb5.conf и login.conf.
В моем случаи krb5.conf выглядит дальнейшим образом:

[libdefaults]
default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts rc4-hmac des3-cbc-sha1 des-cbc-md5 des-cbc-crc
default_tgs_enctypes = aes256-cts-hmac-sha1-96 aes128-cts rc4-hmac des3-cbc-sha1 des-cbc-md5 des-cbc-crc
permitted_enctypes = aes256-cts-hmac-sha1-96 aes128-cts rc4-hmac des3-cbc-sha1 des-cbc-md5 des-cbc-crc

[realms]
<радикальный домен> = {
kdc = <доменное имя сервера KDC>
default_domain = <радикальный домен>
}

[domain_realm]
.<радикальный домен> = <радикальный домен>

Где в алгорифмах я добавил aes256-cts-hmac-sha1-96 для правильной работы с Windows 7 заказчиками.
Моё полное доменное имя отличается от коренного впрочем я решил добавить корень и радикальный KDC.

Позже запуска HelloKDC мы обязаны получить маленький отчет в конце которого должно быть написано “Connection test successful.“.

Поехали!

1) Добавляем библиотеку spnego.jar непринужденно в директорию с библиотеками glassfish, а именно GLASSFISH_HOME\lib
2) Модифицируем файл default-web.xml соответствующего glassfish домена, он располагается в папке GLASSFISH_HOME\domains\<имя домена>\config
Модификация заключается в том Дабы добавить сервлет-фильтр:

<filter-name>SpnegoHttpFilter</filter-name>
<filter-class>net.sourceforge.spnego.SpnegoHttpFilter</filter-class>

<init-param>
<param-name>spnego.allow.basic</param-name>
<param-value>true</param-value>
</init-param>

<init-param>
<param-name>spnego.allow.localhost</param-name>
<param-value>true</param-value>
</init-param>

<init-param>
<param-name>spnego.allow.unsecure.basic</param-name>
<param-value>true</param-value>
</init-param>

<init-param>
<param-name>spnego.login.client.module</param-name>
<param-value>spnego-client</param-value>
</init-param>

<init-param>
<param-name>spnego.krb5.conf</param-name>
<param-value>krb5.conf</param-value>
</init-param>

<init-param>
<param-name>spnego.login.conf</param-name>
<param-value>login.conf</param-value>
</init-param>

<init-param>
<param-name>spnego.preauth.username</param-name>
<param-value>Имя пользователя из HelloKDC</param-value>
</init-param>

<init-param>
<param-name>spnego.preauth.password</param-name>
<param-value>Пароль пользователя из HelloKDC</param-value>
</init-param>

<init-param>
<param-name>spnego.login.server.module</param-name>
<param-value>spnego-server</param-value>
</init-param>

<init-param>
<param-name>spnego.prompt.ntlm</param-name>
<param-value>true</param-value>
</init-param>

<init-param>
<param-name>spnego.logger.level</param-name>
<param-value>1</param-value>
</init-param>

<filter-mapping>
<filter-name>SpnegoHttpFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>

3) Скопировать файл krb5.conf (тоже в GLASSFISH_HOME\domains\<имя домена>\config)
4) Модифицировать файл login.conf в GLASSFISH_HOME\domains\<имя домена>\config добавив в конец файла данные из предыдущего login.conf (что сделал для HelloKDC)
5) Зарегистрировать SPN
В моем случаи имя машины было smirnoff, полное имя машины smirnoff.<полное доменное имя> и следственно я зарегистрировал(вернее зарегистрировали админы ЛВС) 2 SPNа на имя учетной записи (которую мы вводили в исходник HelloKDN и в настройках сервлет-фильтра), а именно
setspn -A HTTP/smirnoff <имя учетной записи>
setspn -A HTTP/smirnoff.<полное доменное имя> <имя учетной записи>
Т.е. добавляем запись с полным именем и коротким.

Проверка работы

Проверить работу дозволено с поддержкой примитивный jsp страницы (jsp потому что именно маску *.jsp мы задали в настройках фильтра для перехвата запроса).
<html> <head> <title>Hello SPNEGO Example</title> </head> <body> Hello <%= request.getRemoteUser() %> ! </body> </html>
Которую мы помещаем скажем в docroot нашего glassfish домена.
При обращении к странице мы обязаны получить текст дальнейшего оглавления:
Hello <имя вашей учетной записи>!

PS

Не получилось совладать с отображением начального кода.
С радостью отвечу на вопросы в комментариях к статье.

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB