ADFS (2) – Jak ADFS funguje

1 Úvod

V první části seriálu o ADFS jsme se věnovali terminologii, kterou budeme potřebovat znát, abychom mohli správně pochopit jak ADFS funguje. V této části si povíme, jak ADFS pracuje na příkladu autentizace do Office 365.

2 Teoretický základ

Představme si bezpečnostní entitu, kterou tvoří naše organizace, kterou reprezentuje Active Directory forest. V rámci AD forestu jsme za pomoci IWA (Integrated Windows Authentication – sada protokolů implementovaných v OS Windows 2000+) zajistit Single Sign On.

IWA rovněž poskytuje detaily o uživateli (např. členství ve skupinách).

2.1 Přístup z internetu

Pokud potřebujeme přistoupit k bezpečnostní entitě z internetu a nemáme k dispozici například Direct Access, VPN nebo autentizační proxy, Kerberos nebude fungovat

(nelze vystavit token bez přístupu uživatele k doméně). Je tedy potřeba řešit jiné modely autentizace.

2.2 Přístup partnerských organizací

Nenavážeme-li s partnerskou organizací trust, nezbyde nám bez ADFS jiná možnost, než udržovat pro partnerskou organizaci stínové kopie jejich účtů, kterým přiřadíme patřičná oprávnění. Kromě vyšších administrátorských nároků na správce se můžeme setkat nejen s bezpečnostním rizikem přístupů cizích uživatelů do námi spravované organizace, ale také s dalšími problémy (nekonzistence databáze uživatelských účtů atd.)

Elegantním řešením je ADFS, které poskytuje výhody spojené se Single Sign On a zároveň umožňuje přístup k patřičným zdrojům na základě vydaného důvěryhodného Security Tokenu. Od ADFS máme tyto požadavky:

  • Vytvořit jednotnou autentizační soustavu, která je nezávislá na umístění aplikací
  • Sestavit Security Token tak, aby mohl obsahovat více informací, ne jen členství ve skupinách a uživatelské jméno
  • Věřit, že partnerská organizace správně autentizuje své uživatele
  • Podpora webových prohlížečů a industry standard protokolů

3 Jak ADFS funguje

Funkci ADFS si popíšeme za pomocí následujícího obrázku.

s1

Diagram funkce ADFS

1) Uživatel se snaží přihlásit do Office 365 pomocí UPN, kde doméná UPN suffixu je provázána s Office 365. V Office 365 je vytvořen Claims Provider Trust

s2

Přihlášení do Office 365

2) Probíhá nalezení správného Claims Providera (Pro nefederované domény se autentizujeme vůči Azure AD, pro federované jdeme na krok 3)

3) Pomocí Claims Provider Trustu je do uživatelského prohlížeče poslán požadavek s přesměrováním na veřejnou IP adresu našeho Claims Providera (ADFS serveru z internetu dostupný přes WAP Proxy, odpovídá na zabezpečeném portu 443, který je navíc chráněný Service Communication certifikátem). Relaying Party je v Account Federation Serveru reprezentována jako Relaying Party Trust.

s3

Přesměrování na Claims Providera

4) WEB prohlížeč je přesměrován na Claims Providera (Service Communication Certificate). Claims Provider přijímá požadavek na autentizaci

s4

Přijetí požadavku na autentizaci ADFS serverem

5) Komunikace s uživatelem, kdy je potřeba, aby uživatel zadal uživatelské jméno a heslo, nebo byl v rámci IWA rovnou autentizován

6) V rámci autentizace Claims Provider komunikuje s Account Partner Organization (což je v našem případě lokální Active Directory)

s5

Potvrzení autentizace tokenu

7) Claims Providerobdrží informace o uživateli, které dále zpracuje. Mezi informacemi mohou být další údaje, jako členství ve skupinách a další atributy, které ADFS převede do claimů. Claimy se dále mohou přeposlat v Security Tokenu.

8) Claims Provider vystaví Security Token. Security Token v sobě bude obsahovat Claimy, bude podepsánprivátním klíčem Token Signing Certifikátu a bude zakódován veřejným klíčem Token Decrypting Certifikátu z Office 365 STS. Token vystaví uživateli.

s6

Potvrzení vystavení tokenu

s7

Výpis vložených claimů

9) Uživatelský prohlížeč přepošle Security Token do Office 365

10) Office 365 vystaví za pomocí Resource Federation Serveru token na základě security tokenu z bodu 8, který uživateli garantuje přístup k aplikacím, ke kterým má na základě autentizace oproti Account Partner Organizacipráva.

Platnost Security Tokenu je možné nastavit přes Powershell

Set-ADFSRelayingPartyTrust <jméno> -TokenLifeTime <minut>

V příštím díle seriálu si povíme, jak nainstalovat ADFS servery a jak provádět základní management.

- Zbyněk Saloň, KPCS CZ

Mohlo by vás také zajímat:

Basic Overview of ADFS & Azure Identity