Pull to refresh

GSSAPI и Firefox/Thunderbird для сквозной авторизации в Windows

Reading time2 min
Views11K
Ваша машина находиться Windows домене и вы хотите использовать единую авторизацию например на прокси и почтовом сервере. Для того чтобы включить в Firefox использование сквозной авторизации вам нужно отредактировать 2 ключа на странице about:config.
  • network.negotiate-auth.delegation-uris = https://,http://
  • network.negotiate-auth.trusted-uris = https://,http://


Если вы хотите использовать Kerberos для авторизации на IIS то достаточно включить «интегрированую авторизацию», но т.к. при установке IIS Windows не создает service principal name (SPN), вам его придеться создать самому иначе Firefox будет использовать NTLM через GSSAPI.

Для редактирования principial'ов вам потребуеться Windows Support tools и утилита setspn.exe. Что бы добавить новый SPN вам нужно будет ввести setspn -A HTTP/FQDN имя_машины_для_которой_создаем SPN, где FQDN адресс вашего IIS-сервера.

Вы так же можете посмотреть список всех SPN, setspn -L имя_машины. Стоит обратить внимание, чтобы вы обращались именно по адресу FQDN иначе Kerberos не найдет SPN, регистр букв важен. Или вы можете это сделать вручную используя любой редактор LDAP, adsiedit.msc, AD explorer, ldap admin и т.п. Просто найдите объект компьютера для которого вы хотите создать SPN, CN=SERVER,OU=Domain Controllers,DC=inblock,DC=local и в его атрибутах вы найдете servicePrincipalName.

В случае с Thunderbird'ом вам лишь нужно указать галку «use secure authentication» поле User name не требуеться. На данный момент Firefox и Thunderbird, не показывают никаких ошибок в том случае если Kerberos билет не удалось получить по каким либо причинам, например из-за отсуствия SPN. Поэтому проверить можно только используя снифер, например Wireshark.
Windows использует SSPI закрытый аналог GSSAPI, но смысл имеет одинаковый поэтому я его везде называю GSSAPI.

У вас есть почтовый сервер на UNIX машине? Создайте в AD учетную запись пользователя(пароль не важен) с именем UNIX машины. Используя утилиту ktpass из набора support tools, создадим keytab файл. ktpass -princ imap/debian.inblock.local@inblock.local -mapuser debian +rndpass -ptype KRB5_NT_SRV_HST -out imap.keytab. На UNIX машине не забываем указать DNS сервер домен контроллера. В /etc/krb5.conf
[libdefaults]
default_realm = INBLOCK.LOCAL

И проверерим что у нас корректное FQDN имя у машины — hostname -f. Остаеться только настроить сам сервер на использование GSSAPI вот например инструкция для Dovecot, она заключаеться только во включении этого режима.

GSSAPI, WTF?!
GSSAPI это набор интерфейсов которые задают стандартный набор функции — запросить билет, продлить билет и т.п. GSSAPI являеться посредником между Программой и KDC сервером ну или kerberos протоколом проще говоря.
Он был разработан, чтобы навести порядок т.к. когда он появился существовали разные реализации Kerberos (как и сейчас, MIT и Heimdal) они были несовместимы с друг другом. GSSAPI может использован не только для Kerberos, хотя это самое популярное использование его. Допустим Microsoft разработает новый UltraMegaMSsecure protocol и добавляет ему механизмы вызова через GSSAPI(SSPI), любая программа которая умеет работать с GSSAPI сможет использовать этот новый протокол. Это позволяет избавить разработчика программы во первых понимать как работет авторизация, а во вторых его программа будет работать даже если выйдет новая версия Kerberos10 ;).
К примеру именно через GSSAPI(SSPI) Firefox использует NTLM авторизацию.
Tags:
Hubs:
Total votes 10: ↑9 and ↓1+8
Comments13

Articles