Web IIS na Windows a SSO (ověření Windows)

CPU

  • *****
  • 613
    • Zobrazit profil
    • E-mail
Web IIS na Windows a SSO (ověření Windows)
« kdy: 13. 04. 2022, 10:46:38 »
Web IIS na Windows a SSO (ověření Windows)

Hoj, mám webserver IIS na Windows server, potřebuji zapnout single sign on, ale server nechci mít v doméně, jen chci ověření vůči AD kterému věřím. Jde to vůbec? Na linuxu to jde, ale nezjistil jsem, jestli to je průchodné na Windows. Jak se SSO nastaví na straně IIS je jasné, ale jak to opřít o AD, když server není v doméně?
Přes setSPN nastavit cílové AD?


Re:Web IIS na Windows a SSO (ověření Windows)
« Odpověď #1 kdy: 13. 04. 2022, 11:05:25 »
princip je v nastavení providerů, musíš si přidat vlastního a ten bude opřený třeba LDAPem o AD nebo bude mít s ním fedaraci, nikoliv abys měl přímou integraci ISS do AD přes negotiate/NTLM. U klientů používáme často třeba Cyberark (placený) nebo open source Apache Knox. Můžeš využít i nějakou službu typu Azure Active Directory a spojit je pře federaci (ADFS), což je cesta kterou MS teď tlačí.

CPU

  • *****
  • 613
    • Zobrazit profil
    • E-mail
Re:Web IIS na Windows a SSO (ověření Windows)
« Odpověď #2 kdy: 13. 04. 2022, 11:35:27 »
Pfff....tak to nemám radost.

Takže buď můžu přidat server do domény (špatné) nebo se pustit do větší akce .... :-( A já doufal, že to půjde vyřešit přes Kerberos/SPN.

CPU

  • *****
  • 613
    • Zobrazit profil
    • E-mail
Re:Web IIS na Windows a SSO (ověření Windows)
« Odpověď #3 kdy: 13. 04. 2022, 12:09:52 »
Našel jsem nějaké zdroje, které uvádí, že server s IIS nemusí být v doméně a že zásadní je jen přístup k řadiči/do AD. Pfff....

Re:Web IIS na Windows a SSO (ověření Windows)
« Odpověď #4 kdy: 13. 04. 2022, 12:53:22 »
abys dostal spn v kerberosu, musíš ten server dát do domény. Nebo si můžeš provozovat svůj KDC, buď jako forest nebo crossrealm. Proč ti tak vadí ho dát do domény?

A můžeš ty zdroje odkázat, ať víme o čem se bavíme? A jak se dostaneš k radič/AD? Anonymní přístup a ověřování hesel přes anonymní přístup je věc, která je už nějakou dobu zapovězena. Potřebuješ tedy nějakého bind usera, přes kterého pojedeš, v AD se tohle vše děje pře LDAP protokol, o tom jsem hned psal na začátku příspěvku.

Tady máš problém, že co vím, ISS SSO neumí LDAP, umí pouze kerberos/negotiate nebo NTLM a to znamená členství v doméně. Konkrétně se bavím o téhle službě https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/authentication/windowsauthentication/.



CPU

  • *****
  • 613
    • Zobrazit profil
    • E-mail
Re:Web IIS na Windows a SSO (ověření Windows)
« Odpověď #5 kdy: 13. 04. 2022, 13:09:15 »
Starý server je v doméně a je na něm uživatel, který má přístup k AD, SSO na něm funguje normálně.

Nový server má stejné přístupy, může používat stejného uživatele, má mít zapnuté SSO, ale nechci, aby byl v doméně.

Pak mám linuxový server s uživatelem a přístupem k doméně, taky používá SSO a funguje, byť server není v doméně.

Takže mám:
- přístup k serveru
- přístup k AD
- uživatele s potřebným oprávněním v AD

Jen ten Widlo server nechci mít členem domény.
Přes setSPN bych měl být schopný Kerberos konfigurovat, ale já nejsem profík přes IIS, takže tohle řeším jednou za deset let...

Re:Web IIS na Windows a SSO (ověření Windows)
« Odpověď #6 kdy: 13. 04. 2022, 13:53:57 »
ide, ale uz to nebude IIS sso.
prenechas celu overovaciu cinnost na aplikacii a nasmerujes to nejakeho externeho provajdera - keycloak, adfs,... - ako uz bolo povedane vyssie.  a tam si zariadis funkcnost kerberos-u a SSO cez AD , co ide realtivne jednoducho.

ale to vyzaduje uz upravu aplikacie.

Re:Web IIS na Windows a SSO (ověření Windows)
« Odpověď #7 kdy: 13. 04. 2022, 14:36:12 »

Nový server má stejné přístupy, může používat stejného uživatele, má mít zapnuté SSO, ale nechci, aby byl v doméně


to je ale implementaci IIS SSO a způsobem jak funguje kerberos, spn je nepřenosné, váže se vždy na daný hostnamea a nemůžeš ho přenést na druhý, musíš i ten druhý hostname přidat do domény. ISS prostě jinou implementaci pro SSO nemá a musíš to vzít přes nějakého externího providera.

Ten tvůj linux používá nejspíš LDAP na získání informací o uživatelích (např. přes nsssd), to je ta jiná implementace.

CPU

  • *****
  • 613
    • Zobrazit profil
    • E-mail
Re:Web IIS na Windows a SSO (ověření Windows)
« Odpověď #8 kdy: 14. 04. 2022, 00:16:08 »
Jak na to koukám, tak na Kerberos můžu zapomenout, ale NTLM by mělo fungovat - přesně jak potřebuji.
Aplikace totiž už v nových verzích SSO nebude obsahovat a jde jen o přechodnou dobu.

https://techcommunity.microsoft.com/t5/iis-support-blog/ntlm-want-to-know-how-it-works/ba-p/347849

Náhodou....někdo nějaké nakopnutí?

Re:Web IIS na Windows a SSO (ověření Windows)
« Odpověď #9 kdy: 14. 04. 2022, 09:06:29 »
Pokud chceš použít NTLM transparent authentication, stejně potřebuješ server v doméně nebo proti komu se chceš přes NTLM přihlašovat? Proti lokálním uživatelům na serveru? Případně zase potřebuješ prostředníka, který ti identitu uživatelů vzdáleně ověří.

Pořád tady je stejná písnička, pokud Windows server není v doméně, IIS se neumí dotázat na identitu uživatele, je možné použít variantu se SPNEGO wrapperem (NTLM + kerberos v5), tam se pak předá podepsaný tiket přes IIS do TGS od klienta, takže přihlášení funguje transparentně pro doménové uživatele přes IIS, který není v doméně, je to tvůj use case?

Můžeš lépe popsat tvůj use case? O co se snažíš? Proč chceš jít takhle proti zdi?

Tuhle variantu třeba máme někde s Citrixem, který funguje jako IDM, IIS je o něm opřený a autorizuje přes NTLM, protože legacy aplikace.

ja.

  • ****
  • 316
    • Zobrazit profil
    • E-mail
Re:Web IIS na Windows a SSO (ověření Windows)
« Odpověď #10 kdy: 14. 04. 2022, 16:03:05 »
Pokud chceš použít NTLM transparent authentication, stejně potřebuješ server v doméně nebo proti komu se chceš přes NTLM přihlašovat? Proti lokálním uživatelům na serveru? Případně zase potřebuješ prostředníka, který ti identitu uživatelů vzdáleně ověří.

Pořád tady je stejná písnička, pokud Windows server není v doméně, IIS se neumí dotázat na identitu uživatele, je možné použít variantu se SPNEGO wrapperem (NTLM + kerberos v5), tam se pak předá podepsaný tiket přes IIS do TGS od klienta, takže přihlášení funguje transparentně pro doménové uživatele přes IIS, který není v doméně, je to tvůj use case?

Ono je v tom trocha viac nuansy.

"Server v doméne" znamená viacero vecí:

1. kerberos: má vydaný keytab na host/fqdn@realm,
2. LDAP: je v CN=Computers (by default, môže byť v inej).

Ani jedno nie je postačujúca podmienka, aby IIS vedel overiť klienta - keytab z bodu 1 totiž patrí hostovi, nie IIS. Ten by mal mať vlastný keytab, http/fqdn@realm, ktorý môže mať iné oprávnenia ako ten z hosta (napríklad teoreticky môže vedieť delegovať).

Takže IIS teoreticky (prakticky to mám odskúšané len s Apache, Keycloak/Wildfly a KeycloakX) stačí SPN, ktoré je povolené pre špecifického hosta, ten host potrebuje mať v DNS A záznam pre fqdn (pre Windows klientov, Linuxu a MacOS, resp. MIT a Heimdall, stačí CNAME) a reverzný záznam (len Windows klient, ten kanonalizuje hostname, Linux a MacOS to nerobia, a preto ho nepotrebujú). Doména vo fqdn nemusí byť zhodná s realmom. Keytab pre tento SPN nastavíš vo webserveri a ten bude vedieť overiť používateľa voči doménovému Kerberovi.

Zistiť, ako nastaviť vlastný keytab na IIS je ponechané ako domáca úloha. Otázka je, či je to vôbec možné, alebo používa natvrdo SSPI a nechá to na hosta.

Bude však vedieť overiť len to, či používateľ je ten, čo ticket tvrdí, že je. Nebude vedieť členstvo v skupinách alebo atribúty z usera, na to sa treba nabindovať na LDAP a to anonymne nepôjde. Bude treba mať credentials, buď tým istým SPN ako sa pýta Kerbera, ale dá sa aj meno/heslo.

Re:Web IIS na Windows a SSO (ověření Windows)
« Odpověď #11 kdy: 14. 04. 2022, 20:32:53 »
Pořád tady je stejná písnička, pokud Windows server není v doméně, IIS se neumí dotázat na identitu uživatele, je možné použít variantu se SPNEGO wrapperem (NTLM + kerberos v5), tam se pak předá podepsaný tiket přes IIS do TGS od klienta, takže přihlášení funguje transparentně pro doménové uživatele přes IIS, který není v doméně, je to tvůj use case?
IIS se sice sám na identitu uživatele bez AD dotázat neumí, ale stačí přeposlat autorizační hlavičky pro NTLM z klienta na server který to dokáže, a pak mu vrátit odpověď, která pak už u klienta zobrazí žádoucí přihlašovací dialog. Zbytek pak řešit dotazem na LDAP (skupiny, oprávnění atd.) jak je v jednom návrhu výše.
Jestli session pak řešit podepsaným tokenem, nebo záznamem v databázi je už detail.

CPU

  • *****
  • 613
    • Zobrazit profil
    • E-mail
Re:Web IIS na Windows a SSO (ověření Windows)
« Odpověď #12 kdy: 14. 04. 2022, 22:44:58 »
Jen pro info, server jsem hodil do domény a "rozběhlo se to samo" - integrace SSO bude odstraněna.
Problém s Kerberos/NTLM se mi nepovedlo vyřešit.