MS Entra ID (Azure AD) Single Sign-On s volitelnou synchronizací účtů M365
Aplikace Requestor ve výchozím nastavení vytváří a využívá lokální uživatelské účty. Často je ale žádoucí mít možnost se odkazovat na již existující uživatelské účty v tzv. IAM (Identity and Access Management), což je kategorie, do které spadají řešení, jako např. KeyCloak, Auth0 nebo často využívané Microsoft Entra ID (bývalý Azure AD, který byl v roce 2023 Microsoftem přejmenován právě na Entra ID, nicméně jde o identickou službu).
Právě o možnosti využití a konfigurace Microsoft Entra ID pojednává tento návod. Entra ID je součástí téměř všech předplatných Microsoft 365 (Office 365), takže společnosti využívající toto řešení od spol. Microsoft mají možnost již existující přihlašovací údaje buď synchronizovat do aplikace Requestor, případně je využít pro přihlášení pomocí metody SSO (single sign-on).
Varianty konfigurace
Obecně mohou nastat dvě možnosti, jak lze využít účty Microsoft v aplikaci Requestor. Nejprve zde uvedeme rozdíly a funkčnost, konkrétní postup konfigurace obou částí se pak nachází v samostatných kapitolách níže.
Kombinace existujících účtů s volitelným přihlášením pomocí SSO
V této situaci chceme dosáhnout stavu, kdy všechny účty, které máme aktuálně v aplikaci Requestor (tedy jsou to buď lokální účty vytvářené ručně - spravované v aplikaci, případně již synchronizované jiným způsobem, např. LDAP) s možností přihlášení pomocí SSO prostřednictvím Microsoft Entra ID. Při přihlášení tedy bude vzdy možné využít lokální účet (jelikož je spravován v aplikaci, stejně jako například přihlášení přes doménový účet) a volitelně navíc také Entra ID SSO, a to za předpokladu, že:
aplikace má nastavené přihlašování pomoci emailu a hesla (konfigurace obecné bezpečnosti aplikace)
každý uživatel má unikátní e-mailovou adresu (což je zároveň podmínka výše uvedeného nastavení)
e-mailová adresa uživatele přihlašujícího se přes Entra ID SSO je stejná, jako je účet Microsoft daného uživatele
V praxi tedy na přihlašovací obrazovce aplikace přibude tlačítko přihlášení přes Microsoft Entra ID a po kliknutí na tlačítko dojde k oveření účtu Microsoft a přesměrování zpět do aplikace. Pokud v aplikaci existuje uživatelský účet s tímto e-mailem, dojde k přihlášení do aplikace Requestor.
V tomto případě stačí provést pouze jednu registraci v portálu Azure, kterou popisujeme níže v sekci Konfigurace Entra ID SSO + následnou konfiguraci v aplikaci.
Synchronizace účtu Mirosoft Entra ID
Druhou (a zřejmě také častěji využívanou) variantou je konfigurace synchronizace uživatelských účtů, kdy se z Microsoft Entra ID synchronizují všechny uživatelské účty. Ty se v sekci Uživatelé v aplikaci zobrazují v separátní záložce a obsahují všechny potřebné údaje k přihlášení. Rozdíl je v tom, že nedochází k synchronizaci hesla, proto je pro přihlášení přes tyto synchronizované účty možné využít pouze tlačítko Microsoft Entra ID (pro úplnost uvedeme, že text tlačítka je možné upravit, v našem příkladu ovšem využíváme tento text).
I v tomto případě musí mít aplikace nastavené přihlašování pomocí e-mailu a hesla a e-mailové adresy musí být unikátní.
Aplikace umožňuje existenci separátní databáze lokálních účtů, ke kterým se bude možné hlásit loginem (resp. e-mailem) a heslem spravovaným v aplikaci. Z principu se ale musí jednat o takový e-mail, který bude odlišný od všech ostatních e-mailových adres, proto pro tento seznam lokálních účtů nebude z logiky věci fungovat přihlášení přes tlačítko Microsoft Entra ID.
V této situaci tedy bude potřeba provést obě konfigurace níže (jak Entra ID SSO, tak následně Entra ID pro synchronizaci).
Konfigurace Entra ID (Azure AD) SSO
Konfigurace Entra ID (Azude AD) SSO sestává ze dvou částí - první část je registrace v portálu Azure, druhá část je pak konfigurace v aplikaci.
Nejprve tedy přejdeme do portálu Azure na adrese https://portal.azure.com a zvolíme Microsoft Entra ID.
Na stránce Microsoft Entra ID zvolíme v levém menu App registrations a klikneme na tlačítko New registration.
Na nové stránce vyplníme nějaké vhodné jméno registrace (jméno může být libovolné, doporučujemě neco vhodného, aby bylo možné v budoucnu registraci jednoduše identifikovat) a klikneme na tlačítko Register.
Na přehledové stránce nové registrace přejdeme v levém menu do sekce Authentication and klikneme na tlačítko Add a platform.
V nově otevřeném panelu vybereme Web.
V nově zobrazeném formuláři vyplníme sekci Redirect URIs, kam vložíme adresu naší aplikace requestor, kterou konfigurujeme (na screenshotu níže je přiklad). Zatrhneme checkbox ID tokens a nakonec potvrdíme tlačítkem Configure.
V sekci API permissions klikneme na Grant admin consent for [název organizace] a potvrdíme.
Na stránce přehledu registrace si zkopírujeme následující hodnoty:
Application (client) ID
Directory (tenant) ID
V sekci Azure AD SSO vyplníme ID aplikace, Azure AD tenant, zvolíme identifikační údaj, který slouží k párování účtů (doporučujeme ponechat a využívat e-mail) a volitelně upravíme text tlačítka. Dále klikneme na červené tlačítko Neaktivní, abychom modul aktivovali (jak je vidět níže - bude se zobrazovat zeleně Aktivní). Následně klikneme na Uložit.
Následně je nutné provést restart aplikace (v IIS stačí provést recyklaci aplikačního poolu). Po restartu aplikace by se na přihlašovací stránce mělo zobrazit tlačítko Microsoft Entra ID, na které když klikneme a dojde k úspěšnému ověření oproti účtu Microsoft registrované organizace, dojde k přihlášení do aplikace - tedy za předpokladu, že v aplikaci existuje účet s touto e-mailovou adresou.
Konfigurace Entra ID (Azure AD) - synchronizace účtů
Synchronizaci účtů je možné nastavit dvěma způsoby. První a doporučená možnost je využít synchronizaci čistě přes API (aplikační autentizace v MS Entra ID), nebo použít starší způsob pomocí delegované autentizace. Pro úplnost zde ponecháme obě možnosti s tím, že pro nové nastavení doporučujeme využít již aplikační autentizaci.
Aplikační autentizace
U aplikační autentizace můžeme buď využít již existující registraci v portálu Azure (viz předchozí postup u konfigurace SSO), nebo vytvořit registraci novou. Postup v případě tvorby nové registrace aplikace je stejný (vytvoříme novou registraci s vhodným jménem a klikneme na Register).
U aplikační autentizace není potřeba vyplňovat Redirect URI, obecně stačí pouze:
nastavit oprávnění API
vytvořit Client Secret
Oprávnění pro API nastavíme v záložce API permissions kliknutím na Add a permission.
V nově otevřeném panelu zvolíme Microsoft Graph.
Dále zvolíme Application permissions.
Zde vyhledáme, zvolíme a přidáme User.Read.All a Directory.Read.All. Po přidání by měla nastavená oprávnění vypadat následovně:
V tuto chvíli je ještě potřeba kliknout na Grant admin consent. Po udělení souhlasu bude vypadat nastavení takto:
Nyní přejdeme do sekce Certificates & secrets a klikneme na New client secret.
Vyplníme vhodný název a zvolíme co nejdelší platnost (v době tvorby tohoto návodu se jednalo o 2 roky).
Potvrdíme kliknutím na tlačítko Add. Následně je nutné si zkopírovat hodnotu tohoto tajného kódu, jelikož bude potřeba později pro konfiguraci aplikace a tato hodnota se již příště nezobrazí. Proto si nyní hodnotu zkopírujeme a nějam poznačíme nebo uložíme.
Nyní máme vše potřebné k tomu, abychom se přesunuli do administrace aplikace. V administraci v sekci Zabezpečení klikneme na Microsoft Entra ID.
Nyní přejdeme na záložku Account Sync, kde vyplníme dříve získané Application (client) ID, Directory (tenant) ID a Secret (hodnotu tajného klíče, kterou jsme si v předchozích krocích kopírovali). Zároveň kliknutím celou konfiguraci aktivujeme (tlačítko Neaktivní zezelená a text se upraví na Aktivní). U položky Autentizace vybereme Aplikační a poté klikneme na tlačítko Uložit.
U aplikační autentizace není potřeba žádné další přihlašování a synchronizace účtů by měla být zahájena.
Delegovaná autentizace
U delegované autentizace je potřeba provést druhou registraci v portálu Azure, jelikož se zde liší Redirect URI a aplikace jako taková vyžaduje o něco více oprávnění API. Tuto druhou registraci následně využijeme v aplikaci Requestor v odpovídající záložce.
Přejdeme tedy (stejně jako v předchozí registraci) do portálu Azure, klikneme na App registrations, klikneme na tlačítko New registration a vyplníme vhodný název registrace. Následně potvrdíme tlačítkem Register.
V této nové registraci klikneme v menu na sekci Authentication, následně Add a platform.
Jako platform zvolíme Web a v nově zobrazeném formuláři v sekci Redirect URIs vyplníme adresu v následujícím formátu:
https://[adresa aplikace requestor]/AuthAzureActiveDirectoryReaderCallback/Index
Příklad: https://playground.servicedesk.net/AuthAzureActiveDirectoryReaderCallback/Index
Zatrhneme checkbox ID tokens.
Vše uložíme tlačítkem Configure.
Nyní přejdeme do sekce Certificates & secrets a klikneme na New client secret.
Vyplníme vhodný název a zvolíme co nejdelší platnost (v době tvorby tohoto návodu se jednalo o 2 roky).
Potvrdíme kliknutím na tlačítko Add. Následně je nutné si zkopírovat hodnotu tohoto tajného kódu, jelikož bude potřeba později pro konfiguraci aplikace a tato hodnota se již příště nezobrazí. Proto si nyní hodnotu zkopírujeme a nějam poznačíme nebo uložíme.
Nyní přejdeme do sekce API permissions klikneme na tlačítko Add a permission.
V nově otevřeném panelu klikneme na Microsoft Graph.
Vybereme Delegated permissions.
V seznamu je nutné najít a následně vybrat následující oprávnění:
offline_access
user.read.all
user.readwrite.all
directory.read.all
directory.readwrite.all
Jakmile budeme mít vybraná všechna potřebná oprávnění (viz výše), klikneme na tlačítko Grant admin consent for [jméno organizace] a potvrdíme.
Z přehledové stránky zkopírujeme Application (client) ID a Directory (tenant) ID.
Nyní máme vše potřebné k tomu, abychom se přesunuli do administrace aplikace. V administraci v sekci Zabezpečení klikneme na Azure AD.
Nyní přejdeme na záložku Azure AD.
Zde vyplníme dříve získané Application (client) ID, Directory (tenant) ID a Secret (hodnotu tajného klíče, kterou jsme si v předchozích krocích kopírovali). Zároveň kliknutím celou konfiguraci aktivujeme (tlačítko Neaktivní zezelená a text se upraví na Aktivní). Poté klikneme na tlačítko Uložit a přihlásit.
V tuto chvíli je potřeba celé spojení ověřit přihlášením se účtem Microsoft. Po úspěšném ověření by mělo dojít k uložení a synchronizace uživatelských účtů by měla v krátké době proběhnout.
Kontrola synchronizace
Zkontrolovat synchronizaci účtů můžeme například tak, že v Administraci aplikace přejdeme do sekce Uživatelé.
Ve výpisu uživatelů se nově bude nacházet záložka Azure účet. Tam pak uvidíme všechny synchronizované účty.
Lokální účty, které měly stejnou e-mailovou adresu, by se měly automaticky převést na účty Azure.