Nastavení SSO s AD FS¶
Active Directory Federation Services je on-premises volba: vlastní servery vydávají tokeny a discovery URL je vaše vlastní doména. AD FS podporuje OpenID Connect od Windows Server 2016.
Tento průvodce pokrývá stranu AD FS: vytvoření skupiny aplikací a sebrání hodnot, které besoin digna. Strana digna — dashboard_config.toml, testování a řešení problémů — je stejná pro každého poskytovatele a je popsána v Přehledu Single Sign-On.
Před začátkem¶
| Požadavek | Poznámky |
|---|---|
| Verze AD FS | Windows Server 2016 nebo novější — starší verze nepodporují OIDC |
| Přístup | Lokální administrátor na AD FS serveru |
| Název služby federace | např. adfs.yourdomain.com |
| Přesměrovací URI digna | URL, na kterou se uživatelé vrátí po přihlášení, např. https://digna.yourdomain.com/oidc/callback |
Krok 1: Vytvoření skupiny aplikací¶
- Na AD FS serveru otevřete AD FS Management
- Pravým tlačítkem klikněte na Application Groups a zvolte Add Application Group
- Zadejte název
digna - Pod Standalone applications — nebo Client-Server applications podle vaší verze — zvolte Server application accessing a web API
- Klikněte na Next
Krok 2: Konfigurace serverové aplikace¶
- Name:
digna backend - Client Identifier: AD FS vygeneruje GUID. Zkopírujte ho — stane se
DIGNA_OIDC_CLIENT_ID - Redirect URI: zadejte vaši callback URL pro digna a klikněte Add:
- Klikněte Next
Klikněte na Add, ne pouze na Next
Pole pro redirect URI má vlastní tlačítko Add. Pokud napíšete URI a kliknete na Next bez stisknutí Add, URI se zahodí a průvodce nevypíše varování. Před pokračováním se ujistěte, že se URI zobrazí v seznamu pod polem.
Krok 3: Vygenerujte sdílené tajemství¶
- Zaškrtněte Generate a shared secret
- Zkopírujte vygenerované tajemství → stane se
DIGNA_OIDC_CLIENT_SECRET - Klikněte Next
Tajné heslo je zobrazeno pouze jednou
AD FS zobrazí sdílené tajemství pouze na této stránce průvodce a později ho nelze znovu zobrazit. Pokud ho ztratíte, obnovte ho později v nastavení vlastností skupiny aplikací.
Krok 4: Konfigurace Web API¶
- Identifier: zadejte stejný client identifier z Kroku 2 a klikněte Add
- Klikněte Next
- Zvolte Access Control Policy — Permit everyone je nejjednodušší začátek; v produkci to omezte na konkrétní skupinu
- Klikněte Next
Krok 5: Udělení povolených scopes¶
Na kroku Configure Application Permissions zaškrtněte:
openidprofileemail
Poté klikněte Next a dokončete průvodce.
openid není zaškrtnuto implicitně
AD FS v některých verzích předvybere pouze user_impersonation. Bez openid vrací token endpoint OAuth access token místo ID tokenu a digna nemůže uživatele identifikovat.
Krok 6: Potvrďte discovery endpoint¶
Nahraďte svou hodnotu federation service name:
Například:
Otevřete to v prohlížeči. JSON dokument potvrdí, že OIDC je povoleno a že je název hostitele správný.
Backend musí důvěřovat certifikátu
Pro AD FS je běžné používat interní certifikační autoritu. Stroj, na kterém běží digna backend, sám provádí odchozí HTTPS volání na tuto URL, takže vydávající CA musí být v důvěryhodném úložišti toho stroje — ne jen v prohlížečích uživatelů.
Krok 7: Konfigurace digna¶
dashboard/dashboard_config.toml¶
config.toml¶
[oidc.adfs]
DIGNA_OIDC_CLIENT_ID = "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
DIGNA_OIDC_CLIENT_SECRET = "<the shared secret copied in Step 3>"
DIGNA_OIDC_REDIRECT_URI = "https://digna.yourdomain.com/oidc/callback"
DIGNA_OIDC_CONFIGURATION_URL = "https://adfs.yourdomain.com/adfs/.well-known/openid-configuration"
Hodnota key v obou souborech musí souhlasit — zde adfs.
Krok 8: Testování¶
Restartujte backend a webový server, poté otevřete dashboard. Kompletní kontrolní seznam najdete v Testování přihlášení.
Řešení problémů s AD FS¶
MSIS9611: The Client Is Not Allowed to Access the Resource¶
Identifier web API v Kroku 4 neodpovídá client identifieru, nebo nebyly uděleny scopes v Kroku 5. Obě nastavení lze upravit v properties skupiny aplikací.
MSIS9602: Invalid redirect_uri¶
URI bylo napsáno, ale nebylo přidáno tlačítkem Add, nebo se liší od DIGNA_OIDC_REDIRECT_URI. Zkontrolujte Application Groups → digna → digna backend → Properties.
Nebyl vrácen ID token¶
Chybí scope openid mezi oprávněními aplikace.
Backend nemůže dosáhnout discovery URL¶
Buď DNS na backend hostiteli nerozlišuje název federace, nebo tamní AD FS certifikát není důvěryhodný. Otestujte pomocí curl https://adfs.yourdomain.com/adfs/.well-known/openid-configuration přímo ze serveru digna.
Události k prohlédnutí¶
AD FS server loguje chyby do Applications and Services Logs → AD FS → Admin ve Event Vieweru, obvykle s konkrétnějším důvodem, než jaký zobrazuje prohlížeč.
Viz také¶
- Přehled Single Sign-On — referenční konfigurace, testování a obecné řešení problémů
- Microsoft: Scénáře AD FS OpenID Connect