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

Gssapi и firefox/thunderbird для сквозной авторизации в windows

Ваша машина находиться Windows домене и вы хотите использовать единую авторизацию например на прокси и почтовом сервере. Для того чтобы включить в Firefox использование сквозной авторизации вам нужно отредактировать 2 ключа на странице about:config.

Если вы хотите использовать 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/[email protected] -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, она заключаеться только во включении этого режима.

Похожее:  Kerberos - Справочный центр - Справочный центр Astra Linux

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

Kerberos authentication with adfs not working in firefox quantum | форум поддержки корпоративный firefox | поддержка mozilla

We are attempting to use ADFS with Kerberos. The /adfs/ls/wia URL works out of box with both Internet Explorer and Google Chrome, but we unable to make it work in Firefox Quantum. Instead we are presented with a completely blank screen. We are running ADFS 3.0 on Windows Server 2022 R2 with NTLM traffic disabled. When we temporarily enable NTLM on the ADFS server, Kerberos authentication works. We have also tried on a Windows Server 2022 box running ADFS 4.0 and we get the same results. Have have ensured that the WIA user agent includes Mozilla 5.0 and up.

We have also tried adjusting the URIS in about:config as suggested online to include our domain for the following values:

network.automatic-ntlm-auth.trusted-uris
network.negotiate-auth.trusted-uris

We are wondering if there are any further configurations that we may need to get this to work.

Thanks

Kerberos authorization doesn’t work on chrome and firefox, but works on ie

I follow this guide to integrate cas with Windows AD.

It works fine on every browser few days ago. But not it only works on IE, when I use firefox browser only send “Negotiate TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAbEdAAAADw==” to server, then browser return to cas login page.

This problem only have been found on production environment recently. I have a test environment with same configuration, but it works fine until now.

I know when kerberos ticket is not cached on local, browser will send “Negotiate TlRMT…”. But I can see ticket with klist command, and it works on IE means the
ticket is ok.

I guess it’s probably caused by some configuration of the windows client or ad server, could anyone give me some advice, tks!

https://1056-app.test.com” have already add to
“network.negotiate-auth.trusted-uris” on firefox. And I also tried to
reinstall firefox, not works.

Chrome: 55

IE:11

FireFox:56

Clinet Browser OS:Windows 7

AD Server OS: Windows Server 2008 R2

Cas Server OS: Suse11Sp3

Here is the http dump on FireFox

GET https://1056-app.test.com/cas/login 401 Unauthorized

Response Headers
Server : nginx/1.8.0
Date : Fri, 13 Oct 2022 10:38:08 GMT
Content-Type : text/html;charset=UTF-8
Transfer-Encoding : chunked
Connection : keep-alive
Pragma : no-cache
Expires : Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control : no-cache
WWW-Authenticate : Negotiate
Content-Language : en-US
Content-Encoding : gzip
Vary : Accept-Encoding

Request Headers
Host : 1056-app.test.com
User-Agent : Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20220101 Firefox/53.0
Accept : text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language : en-US,en;q=0.5
Accept-Encoding : gzip, deflate, br
Cookie : JSESSIONID=EE40B3C3FAFB30D13F45DC612E4D383ECC95916DBE12BEDDE21E9D933893964A4EB867271389530BC8A4B6E9B485E944B952
Connection : keep-alive
Upgrade-Insecure-Requests : 1




GET https://1056-app.test.com/cas/login 401 Unauthorized

Response Headers
Server : nginx/1.8.0
Date : Fri, 13 Oct 2022 10:38:08 GMT
Content-Type : text/html;charset=UTF-8
Transfer-Encoding : chunked
Connection : keep-alive
Pragma : no-cache
Expires : Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control : no-cache
Content-Language : en-US
Content-Encoding : gzip
Vary : Accept-Encoding

Request Headers
Host : 1056-app.test.com
User-Agent : Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20220101 Firefox/53.0
Accept : text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language : en-US,en;q=0.5
Accept-Encoding : gzip, deflate, br
Cookie : JSESSIONID=EE40B3C3FAFB30D13F45DC612E4D383ECC95916DBE12BEDDE21E9D933893964A4EB867271389530BC8A4B6E9B485E944B952
Connection : keep-alive
Upgrade-Insecure-Requests : 1
Authorization : Negotiate TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAbEdAAAADw==

klist on client

Client: huangq @ SWI.TEST.NET
Server: HTTP/1056-app.test.com @ SWI.TEST.NET
KerbTicket Encryption Type: RSADSI RC4-HMAC(NT)
Ticket Flags 0x40a00000 -> forwardable renewable pre_authent
Start Time: 10/13/2022 12:52:34 (local)
End Time:   10/13/2022 22:11:01 (local)
Renew Time: 10/20/2022 12:11:01 (local)
Session Key Type: RSADSI RC4-HMAC(NT)

setspn -Q cmd on client

C:Usershuangq>setspn -Q HTTP/1056-app.test.com
Checking domain DC=swi,DC=test,DC=net
CN=SOWSLdapA,OU=Service,OU=_Users,DC=swi,DC=test,DC=net
    HTTP/1056-app.test.com
Existing SPN found! 

keytab create command

ktpass.exe /out D:\1056-app.keytab /princ HTTP/[email protected] /pass xxx /mapuser [email protected] /ptype KRB5_NT_PRINCIPAL /crypto RC4-HMAC-NT

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *