Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek ukazuje, jak vytvořit aplikaci WebSphere v Javě, která přihlašuje uživatele pomocí knihovny Identity a ověřování Microsoftu (MSAL) pro Javu. Aplikace také omezuje přístup k stránkám na základě členství ve skupině zabezpečení Microsoft Entra ID.
Následující diagram znázorňuje topologii aplikace:
Diagram znázorňující topologii aplikace.
Klientská aplikace používá MSAL pro Javu (MSAL4J) k přihlašování uživatelů do tenanta Microsoft Entra ID a k získání ID tokenu od Microsoft Entra ID. ID token potvrzuje, že uživatel je ověřen v rámci tohoto tenanta. Aplikace chrání své trasy podle stavu ověřování uživatele a členství ve skupině.
Video k tomuto scénáři najdete v tématu Implementace autorizace ve vašich aplikacích pomocí rolí aplikací, skupin zabezpečení, oborů a rolí adresáře.
Požadavky
- JDK verze 8 nebo vyšší
- Maven 3
- Tenant služby Microsoft Entra ID. Další informace najdete v článku Jak získat tenant Microsoft Entra ID.
- Uživatelský účet ve vašem vlastním tenantovi Microsoft Entra ID.
- Dvě skupiny zabezpečení, a , obsahující uživatele, se kterými chcete testovat.
- WebSphere
- Visual Studio Code
- Azure Tools for Visual Studio Code
Doporučení
- Určitá znalost Javy / Jakarta Servlets.
- Znalost terminálu Linux/OSX
- jwt.ms pro kontrolu vašich tokenů.
- Fiddler pro monitorování vaší síťové aktivity a odstraňování problémů.
- Sledujte blog Microsoft Entra , abyste zůstali up-to-datem s nejnovějším vývojem.
Nastavení ukázky
Následující části ukazují, jak nastavit ukázkovou aplikaci.
Klonování nebo stažení ukázkového úložiště
Pokud chcete ukázku naklonovat, otevřete okno Bash a použijte následující příkaz:
git clone https://github.com/Azure-Samples/ms-identity-msal-java-samples.git
cd 3-java-servlet-web-app/3-Authorization-II/groups
Případně přejděte do repozitáře ms-identity-msal-java-samples, potom jej stáhněte jako soubor .zip a rozbalte ho na pevný disk.
Důležité
Abyste se vyhnuli omezením délky cesty k souboru ve Windows, naklonujte nebo extrahujte úložiště do adresáře poblíž kořenového adresáře pevného disku.
Zaregistrujte ukázkovou aplikaci ve vašem tenantovi Microsoft Entra ID
V této ukázce je jeden projekt. V následujících částech se dozvíte, jak aplikaci zaregistrovat pomocí webu Azure Portal.
Zvolte tenanta Microsoft Entra ID, ve kterém chcete vytvářet aplikace.
Pokud chcete zvolit tenanta, postupujte následovně:
Přihlaste se k portálu Azure.
Pokud je váš účet ve více než jednom tenantovi Microsoft Entra ID, vyberte svůj profil v rohu portálu Azure a potom výběrem možnosti Přepnout adresář přepněte relaci na požadovaný tenant Microsoft Entra ID.
Registrace aplikace (java-servlet-webapp-groups)
Nejprve zaregistrujte novou aplikaci v portálu Azure podle pokynů v článku Rychlý start: Registrace aplikace pomocí platformy Microsoft identity.
Potom pomocí následujících kroků dokončete registraci:
Přejděte na stránku Registrace aplikací na webu Microsoft Identity Platform pro vývojáře.
Vyberte Nová registrace.
Na stránce Registrace aplikace, která se zobrazí, zadejte následující informace o registraci aplikace:
- V části Název zadejte smysluplný název aplikace, který se bude zobrazovat uživatelům aplikace – například .
- V části Podporované typy účtů vyberte Pouze účty v tomto organizačním adresáři.
- V části Redirect URI vyberte v rozevíracím seznamu možnost Web a zadejte následující identifikátor URI přesměrování: .
Výběrem možnosti Registrovat aplikaci vytvořte.
Na stránce registrace aplikace vyhledejte a zkopírujte hodnotu ID aplikace (klienta), kterou chcete použít později. Tuto hodnotu použijete v konfiguračním souboru nebo souborech vaší aplikace.
Výběrem možnosti Uložit uložte změny.
Na registrační stránce aplikace vyberte v navigačním podokně certifikáty a tajné kódy a otevřete stránku, kde můžete vygenerovat tajné kódy a nahrát certifikáty.
V části Tajné klíče klienta vyberte Nový tajný klíč klienta.
Zadejte popis – například tajný kód aplikace.
Vyberte vypršení platnosti tajného kódu nebo zadejte vlastní životnost. Tajné kódy klientů jsou omezené na maximální životnost 24 měsíců a Microsoft doporučuje vypršení platnosti kratší než 12 měsíců. U produkčních aplikací upřednostňujete přihlašovací údaje certifikátu nebo federované identity před tajným klíčem klienta.
Vyberte Přidat. Zobrazí se vygenerovaná hodnota.
Zkopírujte a uložte vygenerovanou hodnotu pro použití v dalších krocích. Tuto hodnotu potřebujete pro konfigurační soubory kódu. Tato hodnota se znovu nezobrazí a nemůžete ji načíst žádným jiným způsobem. Před přechodem na jinou obrazovku nebo podokno si ho proto nezapomeňte uložit z webu Azure Portal.
Na registrační stránce aplikace vyberte v navigačním podokně možnost oprávnění rozhraní API. Otevře se stránka, na které můžete přidat přístup k rozhraním API, která vaše aplikace potřebuje.
Vyberte Přidat oprávnění.
Ujistěte se, že je vybraná karta Rozhraní API Microsoftu.
V části Běžně používané rozhraní MICROSOFT API vyberte Microsoft Graph.
V části Delegovaná oprávnění vyberte ze seznamu User.Read a GroupMember.Read.All. V případě potřeby použijte vyhledávací pole.
Vyberte Přidat oprávnění.
vyžaduje souhlas správce, takže vyberte Udělit nebo odvolat souhlas správce pro {tenant} a potom vyberte Ano, až se zobrazí výzva s dotazem, jestli chcete udělit souhlas s požadovanými oprávněními pro všechny účty v tenantovi. K provedení této akce musíte být správcem tenanta Microsoft Entra ID.
Nakonfigurujte aplikaci (java-servlet-webapp-groups) tak, aby používala registraci vaší aplikace
Ke konfiguraci aplikace použijte následující postup:
Poznámka:
V následujících krocích je stejné jako nebo .
Otevřete projekt v integrovaném vývojovém prostředí (IDE).
Otevřete soubor ./src/main/resources/authentication.properties.
Vyhledejte řetězec . Nahraďte stávající hodnotu ID tenanta Microsoft Entra, pokud jste aplikaci zaregistrovali s možností Účty pouze v tomto organizačním adresáři.
Vyhledejte řetězec a nahraďte existující hodnotu ID aplikace nebo hodnotou aplikace , zkopírovanou z portálu Azure.
Najděte řetězec a nahraďte stávající hodnotu hodnotou, kterou jste uložili během vytváření aplikace na portálu Azure.
Konfigurace skupin zabezpečení
Máte k dispozici následující možnosti, jak dále nakonfigurovat své aplikace tak, aby přijímaly deklaraci skupin:
Obdrží všechny skupiny, ke kterým je přihlášený uživatel přiřazený v tenantovi Microsoft Entra ID, včetně vnořených skupin. Další informace najdete v části Konfigurace vaší aplikace tak, aby přijímala všechny skupiny, které jsou přihlášenému uživateli přiřazeny, včetně vnořených skupin.
Získejte hodnoty deklarací identity skupin z filtrované sady skupin, se kterými je vaše aplikace naprogramovaná tak, aby fungovala. Další informace najdete v části Nakonfigurujte aplikaci tak, aby přijímala hodnoty deklarace skupin z filtrované sady skupin, ke kterým může být uživatel přiřazen. Tato možnost není k dispozici v edici Microsoft Entra ID Free.
Poznámka:
Pokud chcete místo ID skupiny získat nebo místní skupiny, přečtěte si část Požadavky pro použití atributů skupiny synchronizovaných ze služby služba Active Directory v článku Konfigurace deklarací skupin pro aplikace pomocí Microsoft Entra ID.
Nakonfigurujte aplikaci tak, aby přijímala všechny skupiny, ke kterým je přihlášený uživatel přiřazený, včetně vnořených skupin.
Ke konfiguraci aplikace použijte následující postup:
Na registrační stránce aplikace vyberte v navigačním podokně možnost Konfigurace tokenu. Tím otevřete stránku, na které můžete nakonfigurovat deklarace identity poskytované v tokenech vydaných vaší aplikaci.
Výběrem možnosti Přidat deklaraci identity skupin otevřete obrazovku Upravit deklaraci identity skupin.
Vyberte skupiny zabezpečení NEBO možnost Všechny skupiny (včetně distribučních seznamů, ale ne skupin přiřazených k aplikaci). Volba obou možností ruší účinek volby Security Groups.
V části ID vyberte ID skupiny. Tento výběr způsobí, že Microsoft Entra ID odešle ID objektu skupin, k nimž je uživatel přiřazen, v deklaraci groups tokenu ID, který vaše aplikace obdrží po přihlášení uživatele.
Nakonfigurujte aplikaci tak, aby přijímala hodnoty deklarací identity ze filtrované sady skupin, ke kterým může být uživatel přiřazen.
Tato možnost je užitečná, pokud platí následující případy:
- Vaše aplikace má zájem o vybranou sadu skupin, ke kterým se může přiřadit přihlášený uživatel.
- Vaše aplikace nemá zájem o každou skupinu zabezpečení, ke které je tento uživatel přiřazený v tenantovi.
Tato možnost pomáhá vaší aplikaci vyhnout se problému s překročením limitu.
Poznámka:
Tato funkce není k dispozici v bezplatné edici Microsoft Entra ID.
Přiřazení vnořených skupin nejsou při použití této možnosti k dispozici.
Pokud chcete tuto možnost ve své aplikaci povolit, postupujte takto:
Na registrační stránce aplikace vyberte v navigačním podokně možnost Konfigurace tokenu. Tím otevřete stránku, na které můžete nakonfigurovat deklarace identity poskytované v tokenech vydaných vaší aplikaci.
Výběrem možnosti Přidat deklaraci identity skupin otevřete obrazovku Upravit deklaraci identity skupin.
Vyberte Skupiny přiřazené k aplikaci.
Zvolení jiných možností – například Skupiny zabezpečení nebo Všechny skupiny (včetně distribučních seznamů, ale ne skupin přiřazených k aplikaci) – ruší výhody, které vaše aplikace získává používáním této možnosti.
V části ID vyberte ID skupiny. Tato volba způsobí, že Microsoft Entra ID odešle v deklaraci groups tokenu ID token ID objektů skupin, k nimž je uživatel přiřazen.
Pokud zveřejňujete webové rozhraní API pomocí možnosti Zveřejnit rozhraní API, můžete také v části Přístup zvolit možnost ID skupiny. Tato možnost způsobí, že Microsoft Entra ID odešle ID objektu skupin, ke kterým je uživatel přiřazen, v deklaraci groups v přístupovém tokenu.
Na stránce registrace aplikace vyberte v navigačním podokně Přehled a otevřete obrazovku přehledu aplikace.
Vyberte hypertextový odkaz s názvem aplikace ve spravované aplikaci v místním adresáři. Název tohoto pole může být zkrácen – například . Když vyberete tento odkaz, přejdete na stránku Přehled podnikové aplikace přidruženou k instančnímu objektu vaší aplikace v tenantovi, ve kterém jste ji vytvořili. Zpět na stránku registrace aplikace můžete přejít pomocí tlačítka Zpět v prohlížeči.
Výběrem možnosti Uživatelé a skupiny v navigačním podokně otevřete stránku, kde můžete přiřadit uživatele a skupiny k aplikaci.
Vyberte možnost Přidat uživatele.
Na výsledné obrazovce vyberte uživatele a skupiny .
Zvolte skupiny, které chcete přiřadit k této aplikaci.
Výběr skupin dokončíte výběrem možnosti Vybrat.
Výběrem možnosti Přiřadit dokončíte proces přiřazení skupiny.
Vaše aplikace teď obdrží tyto vybrané skupiny v deklaraci identity skupin, když je uživatel přihlášený k vaší aplikaci členem jedné nebo více těchto přiřazených skupin.
Vyberte v navigačním podokně možnost Vlastnosti, čímž otevřete stránku se seznamem základních vlastností vaší aplikace. Nastavte příznak Je vyžadováno přiřazení uživatele? na Ano.
Důležité
Když nastavíte Vyžadováno přiřazení uživatele? na Ano, Microsoft Entra ID ověří, že se k vaší aplikaci můžou přihlásit jen uživatelé přiřazení k vaší aplikaci v podokně Uživatelé a skupiny. Uživatele můžete přiřadit přímo nebo přiřazením skupin zabezpečení, ke kterým patří.
Konfigurace aplikace (java-servlet-webapp-groups) pro rozpoznávání ID skupin
Ke konfiguraci aplikace použijte následující postup:
Důležité
Na stránce Konfigurace tokenu, pokud jste zvolili jinou možnost než groupID – například DNSDomain\sAMAccountName – měli byste v následujících krocích zadat název skupiny – například – místo ID objektu:
Otevřete soubor ./src/main/resources/authentication.properties.
Vyhledejte řetězec a nahraďte stávající hodnotu ID objektu skupiny , které jste zkopírovali z portálu Azure. Odeberte ze zástupné hodnoty také svorky.
Vyhledejte řetězec a nahraďte stávající hodnotu ID objektu skupiny , které jste zkopírovali z portálu Azure. Odeberte ze zástupné hodnoty také svorky.
Sestavte ukázku
Pokud chcete vytvořit ukázku pomocí Mavenu, přejděte do adresáře obsahujícího soubor pom.xml ukázky a spusťte následující příkaz:
mvn clean package
Tento příkaz vygeneruje soubor .war , který můžete spustit na různých aplikačních serverech.
Spusťte ukázku
Tyto pokyny předpokládají, že jste nainstalovali WebSphere a nastavili server. Můžete použít pokyny v článku Nasazení clusteru WebSphere Application Server (tradičního) na Azure Virtual Machines pro základní konfiguraci serveru.
Před nasazením do WebSphere proveďte některé změny konfigurace v samotné ukázce pomocí následujících kroků a pak sestavte nebo znovu sestavte balíček:
Přejděte k souboru authentication.properties vaší aplikace a změňte hodnotu na adresu URL svého serveru a číslo portu, které plánujete použít, jak ukazuje následující příklad:
# app.homePage is by default set to dev server address and app context path on the server # for apps deployed to azure, use https://your-sub-domain.azurewebsites.net app.homePage=https://<server-url>:<port-number>/msal4j-servlet-auth/Po uložení tohoto souboru pomocí následujícího příkazu znovu sestavte aplikaci:
mvn clean packagePo dokončení sestavování kódu zkopírujte soubor .war do systému souborů cílového serveru.
Musíte také provést stejnou změnu v registraci aplikace Azure, kde ji v portálu Azure nastavíte jako hodnotu identifikátoru URI pro přesměrování na kartě Ověřování.
Přejděte na stránku Registrace aplikací na webu Microsoft Identity Platform pro vývojáře.
Použijte vyhledávací pole k vyhledání registrace vaší aplikace – například .
Výběrem jejího názvu otevřete registraci aplikace.
Vyberte Ověřování z nabídky.
V části WebIdentifikátory URI pro přesměrování vyberte možnost Přidat identifikátor URI.
Zadejte identifikátor URI své aplikace a připojte /auth/redirect – například .
Zvolte Uložit.
Pomocí následujících kroků nasaďte ukázku pomocí konzoly integrovaných řešení WebSphere:
Na kartě Aplikace vyberte Nová aplikace a pak Nová podniková aplikace.
Vyberte soubor .war, který jste vytvořili, a poté vybírejte možnost Další, dokud se nedostanete ke kroku instalace Map context roots for Web modules. Ostatní výchozí nastavení by měla být v pořádku.
U kořene kontextu jej nastavte na stejnou hodnotu, jaká následuje za číslem portu v identifikátoru „Redirect URI“, který jste nastavili v ukázkové konfiguraci / registraci aplikace Azure. To znamená, že pokud je identifikátor URI přesměrování , pak by kořenem kontextu mělo být .
Vyberte Dokončit.
Po dokončení instalace aplikace přejděte do části Podnikové aplikace WebSphere na kartě Aplikace.
V seznamu aplikací vyberte soubor .war, který jste nainstalovali, a pak vyberte Spustit a nasaďte.
Po dokončení nasazení přejděte na a měla by se zobrazit aplikace.
Prozkoumejte ukázku
Ukázku můžete prozkoumat pomocí následujících kroků:
- Všimněte si stavu přihlášení nebo odhlášení, který se zobrazuje uprostřed obrazovky.
- Vyberte tlačítko citlivé na kontext v rohu. Toto tlačítko zobrazuje při prvním spuštění aplikace text Přihlásit se.
- Na další stránce postupujte podle pokynů a přihlaste se pomocí účtu v tenantovi Microsoft Entra ID.
- Na obrazovce souhlasu si všimněte požadovaných oborů.
- Všimněte si, že kontextové tlačítko nyní zobrazuje Odhlásit se a vaše uživatelské jméno.
- Vyberte Podrobnosti tokenu ID, chcete-li zobrazit některé dekódované deklarované údaje tokenu ID.
- Výběrem skupiny zobrazíte všechny informace o členství ve skupině zabezpečení pro přihlášeného uživatele.
- Vyberte Pouze správce nebo Běžný uživatel pro přístup k endpointům chráněným deklarací skupin.
- Pokud je přihlášený uživatel ve skupině , může vstoupit na obě stránky.
- Pokud je přihlášený uživatel ve skupině , může vstoupit pouze na stránku Běžný uživatel.
- Pokud přihlášený uživatel není ani v jedné skupině, nemá přístup ani k jedné z těchto dvou stránek.
- Pomocí tlačítka v rohu se odhlaste.
- Po odhlášení vyberte možnost ID Token Details a ověřte, že aplikace zobrazí chybu místo claimů tokenu ID, když uživatel není autorizován.
O kódu
Tato ukázka používá MSAL pro Javu (MSAL4J) k přihlášení uživatele a získání tokenu ID, který může obsahovat deklaraci identity skupin. Pokud je v tokenu ID pro zahrnutí příliš mnoho skupin, ukázka používá Microsoft Graph SDK pro Java k získání údajů o členství ve skupinách z Microsoft Graph. Na základě skupin, do kterých uživatel patří, má přihlášený uživatel přístup buď k žádné, jedné nebo oběma chráněným stránkám, a .
Pokud chcete replikovat chování této ukázky, musíte přidat sadu MSAL4J a Microsoft Graph SDK do svých projektů pomocí Mavenu. Můžete zkopírovat soubor pom.xml a obsah složek helpers a authservlets ve složce src/main/java/com/microsoft/azuresamples/msal4j. Také potřebujete soubor authentication.properties. Tyto třídy a soubory obsahují obecný kód, který můžete použít v široké škále aplikací. Zbývající část ukázky můžete také zkopírovat, ale ostatní třídy a soubory jsou vytvořené speciálně tak, aby řešily cíl této ukázky.
Obsah
Následující tabulka ukazuje obsah složky ukázkového projektu:
| Soubor nebo složka | Popis |
|---|---|
| src/main/java/com/microsoft/azuresamples/msal4j/groupswebapp/ | Tento adresář obsahuje třídy definující back-endovou obchodní logiku aplikace. |
| src/main/java/com/microsoft/azuresamples/msal4j/authservlets/ | Tento adresář obsahuje třídy, které se používají k přihlášení a odhlášení koncových bodů. |
| *Servlet.java | Všechny dostupné koncové body jsou definovány ve třídách Javy s názvy končícími Servlet. |
| src/main/java/com/microsoft/azuresamples/msal4j/helpers/ | Pomocné třídy pro autentizaci. |
| AuthenticationFilter.java | Přesměruje neověřené požadavky na chráněné koncové body na stránku 401. |
| src/main/resources/authentication.properties | Microsoft Entra ID a konfigurace programu. |
| src/main/webapp/ | Tento adresář obsahuje uživatelské rozhraní – šablony JSP. |
| CHANGELOG.md | Seznam změn v ukázce |
| CONTRIBUTING.md | Pokyny pro přispívání do ukázky |
| LICENCE | Licence pro ukázku. |
Zpracovat deklaraci o skupinách v tokenech, včetně zpracování překročení limitu
Následující části popisují, jak aplikace zpracovává deklaraci identity skupin.
Skupiny tvrdí
ID objektu skupin zabezpečení, které přihlášený uživatel je členem, je vrácen v deklaraci skupiny tokenu, jak je znázorněno v následujícím příkladu:
{
...
"groups": [
"0bbe91cc-b69e-414d-85a6-a043d6752215",
"48931dac-3736-45e7-83e8-015e6dfd6f7c",]
...
}
Nárok skupin na překročení limitu
Aby se zajistilo, že velikost tokenu nepřekračuje limity velikosti hlavičky HTTP, omezuje platforma Microsoft Identity Platform počet ID objektů, které zahrnuje do deklarace identity skupin.
Limit nadlimitního využití je 150 pro tokeny SAML, 200 pro tokeny JWT a 6 pro jednostrákové aplikace. Pokud je uživatel členem více skupin, než je limit nadlimitního využití, pak platforma Microsoft Identity Platform nevygeneruje ID skupin v deklaraci identity skupin v tokenu. Místo toho obsahuje v tokenu deklaraci o překročení limitu, která aplikaci indikuje, aby se dotázala rozhraní Microsoft Graph API a načetla informace o členství uživatele ve skupinách, jak ukazuje následující příklad:
{
...
"_claim_names": {
"groups": "src1"
},
{
"_claim_sources": {
"src1": {
"endpoint":"[Graph Url to get this user's group membership from]"
}
}
...
}
Vytvoření scénáře nadlimitního využití v této ukázce pro testování
Pokud chcete vytvořit scénář nadlimitního využití, můžete použít následující kroky:
Pomocí souboru BulkCreateGroups.ps1, který je součástí složky AppCreationScripts, můžete vytvořit velký počet skupin a přiřadit k nim uživatele. Tento soubor pomáhá testovat scénáře nadlimitního využití během vývoje. Nezapomeňte změnit uživatelovo , které je zadané ve skriptu BulkCreateGroups.ps1.
Když spustíte tento příklad a dojde k překročení limitů, uvidíte _claim_names na domovské stránce po přihlášení uživatele.
Důrazně doporučujeme použít funkci filtrování skupin, pokud je to možné, abyste se vyhnuli překročení nadlimitního využití skupin. Další informace najdete v části Nakonfigurujte aplikaci tak, aby přijímala hodnoty deklarace skupin z filtrované sady skupin, ke kterým může být uživatel přiřazen.
V případě, že se nemůžete vyhnout překročení limitu skupin, doporučujeme použít následující postup ke zpracování deklarace „groups“ v tokenu:
- Zkontrolujte nárok _claim_names s jednou z hodnot, která je ve skupinách . Tento nárok udává překročení limitu.
- Pokud je nalezen, zavolejte na koncový bod uvedený v _claim_sources a načtěte uživatelské skupiny.
- Pokud nebyla nalezena žádná, podívejte se do claimu groups, který obsahuje skupiny uživatele.
Poznámka:
Zpracování překročení limitu vyžaduje volání rozhraní Microsoft Graph pro čtení členství přihlášeného uživatele ve skupinách, takže vaše aplikace musí mít oprávnění GroupMember.Read.All, aby bylo možné funkci getMemberObjects úspěšně spustit.
Další informace o programování pro Microsoft Graph najdete ve videu Úvod do Microsoft Graphu pro vývojáře.
ConfidentialClientApplication
instance je vytvořena v souboru AuthHelper.java, jak ukazuje následující příklad. Tento objekt pomáhá vytvořit autorizační adresu URL Microsoft Entra a také pomáhá vyměnit ověřovací token pro přístupový token.
// getConfidentialClientInstance method
IClientSecret secret = ClientCredentialFactory.createFromSecret(SECRET);
confClientInstance = ConfidentialClientApplication
.builder(CLIENT_ID, secret)
.authority(AUTHORITY)
.build();
Pro vytvoření instance se používají následující parametry:
- ID klienta aplikace.
- Tajný klíč klienta, což je požadavek na důvěrné klientské aplikace.
- Autorita Microsoft Entra ID, včetně ID vašeho tenanta Microsoft Entra.
V této ukázce se tyto hodnoty čtou ze souboru authentication.properties pomocí čtečky vlastností v souboru Config.java .
Ukázka krok za krokem
Následující kroky poskytují návod k funkcím aplikace:
Prvním krokem procesu přihlašování je odeslání požadavku na koncový bod pro vašeho tenanta Microsoft Entra ID. Instance MSAL4J se používá k vytvoření adresy URL žádosti o autorizaci. Aplikace přesměruje prohlížeč na tuto adresu URL, což je místo, kde se uživatel přihlásí.
final ConfidentialClientApplication client = getConfidentialClientInstance(); AuthorizationRequestUrlParameters parameters = AuthorizationRequestUrlParameters.builder(Config.REDIRECT_URI, Collections.singleton(Config.SCOPES)) .responseMode(ResponseMode.QUERY).prompt(Prompt.SELECT_ACCOUNT).state(state).nonce(nonce).build(); final String authorizeUrl = client.getAuthorizationRequestUrl(parameters).toString(); contextAdapter.redirectUser(authorizeUrl);Následující seznam popisuje funkce tohoto kódu:
- : Parametry, které musí být nastaveny k sestavení AuthorizationRequestUrl.
- : Místo, kam Microsoft Entra přesměruje prohlížeč spolu s autorizačním kódem po zadání přihlašovacích údajů uživatelem. Musí odpovídat identifikátoru URI pro přesměrování v registraci aplikace Microsoft Entra ID v Azure portal.
- : Rozsahy jsou oprávnění, o která aplikace žádá.
- Obvykle tři rozsahy postačují k získání odpovědi obsahující token ID.
- Úplný seznam rozsahů oprávnění, které aplikace požaduje, najdete v souboru authentication.properties. Můžete přidat další oprávnění, například .
Uživateli se zobrazí výzva k přihlášení pomocí ID Microsoft Entra. Pokud je pokus o přihlášení úspěšný, prohlížeč uživatele se přesměruje do koncového bodu přesměrování aplikace. Platný požadavek na tento koncový bod obsahuje autorizační kód.
Tato instance pak vymění tento autorizační kód za token ID a přístupový token od Microsoft Entra ID.
// First, validate the state, then parse any error codes in response, then extract the authCode. Then: // build the auth code params: final AuthorizationCodeParameters authParams = AuthorizationCodeParameters .builder(authCode, new URI(Config.REDIRECT_URI)).scopes(Collections.singleton(Config.SCOPES)).build(); // Get a client instance and leverage it to acquire the token: final ConfidentialClientApplication client = AuthHelper.getConfidentialClientInstance(); final IAuthenticationResult result = client.acquireToken(authParams).get();Následující seznam popisuje funkce tohoto kódu:
- : Parametry, které musí být nastaveny, aby bylo možné vyměnit autorizační kód za token ID a/nebo přístupový token.
- : Autorizační kód, který byl přijat v koncovém bodu přesměrování.
- : URI přesměrování použité v předchozím kroku musí být znovu předáno.
- : Rozsahy oprávnění použité v předchozím kroku musí být znovu předány.
Pokud je operace úspěšná, extrahují se atributy tokenu. Pokud kontrola nonce proběhne úspěšně, výsledky se umístí do , instance , a uloží do relace. Aplikace pak může z relace prostřednictvím instance vytvořit instanci , kdykoli k ní potřebuje přístup, jak ukazuje následující kód:
// parse IdToken claims from the IAuthenticationResult: // (the next step - validateNonce - requires parsed claims) context.setIdTokenClaims(result.idToken()); // if nonce is invalid, stop immediately! this could be a token replay! // if validation fails, throws exception and cancels auth: validateNonce(context); // set user to authenticated: context.setAuthResult(result, client.tokenCache().serialize()); // handle groups overage if it has occurred. handleGroupsOverage(contextAdapter);Po předchozím kroku můžete získat členství ve skupinách voláním na instanci .
Pokud je uživatel členem příliš mnoha skupin – více než 200 –, může volání vrátit prázdný výsledek, nebýt volání . Mezitím vrací , což signalizuje, že došlo k překročení limitu a že získání úplného seznamu skupin vyžaduje volání rozhraní Microsoft Graph. Podívejte se na metodu v AuthHelper.java, kde uvidíte, jak tato aplikace používá , když dojde k překročení limitu.
Ochrana tras
V AuthenticationFilter.java se dozvíte, jak ukázková aplikace filtruje přístup k trasám. V souboru authentication.properties obsahuje vlastnost čárkami oddělené trasy, ke kterým mají přístup pouze ověření uživatelé, jak ukazuje následující příklad:
# for example, /token_details requires any user to be signed in and does not require special groups claim
app.protect.authenticated=/token_details
Kterákoli z tras uvedených v sadách pravidel oddělených čárkami pod je také nepřístupná pro neautentizované uživatele, jak ukazuje následující příklad. Tyto trasy však také obsahují mezerami oddělený seznam členství ve skupinách. Po ověření mají k těmto trasám přístup jenom uživatelé patřící alespoň do jedné z odpovídajících skupin.
# define short names for group IDs here for the app. This is useful in the next property (app.protect.groups).
# EXCLUDE the curly braces, they are in this file only as delimiters.
# example:
# app.groups=groupA abcdef-qrstuvw-xyz groupB abcdef-qrstuv-wxyz
app.groups=admin {enter-your-admins-group-id-here}, user {enter-your-users-group-id-here}
# A route and its corresponding group(s) that can view it, <space-separated>; the start of the next route & its group(s) is delimited by a <comma-and-space-separator>
# this says: /admins_only can be accessed by admin group, /regular_user can be accessed by admin group and user group
app.protect.groups=/admin_only admin, /regular_user admin user
Oblasti
Obory oprávnění určují v Microsoft Entra ID úroveň přístupu, o kterou aplikace žádá.
V závislosti na požadovaných oborech zobrazí ID Microsoft Entra dialog pro vyjádření souhlasu uživateli při přihlášení. Pokud uživatel udělí souhlas s jednou nebo více oblastmi oprávnění a získá token, oblasti oprávnění, s nimiž byl udělen souhlas, jsou zakódovány do výsledného .
Požadovaná oprávnění aplikace najdete v souboru authentication.properties. Ve výchozím nastavení aplikace nastaví hodnotu `scopes` na . Tento konkrétní obor rozhraní Microsoft Graph API se vyžaduje v případě, že aplikace potřebuje volat Graph, aby získala členství ve skupinách uživatele.
Více informací
- Identity a ověřování Microsoftu (MSAL) pro jazyk Java
- Microsoft identity platform (Microsoft Entra ID pro vývojáře)
- Rychlý start: Registrace aplikace na platformě Microsoft Identity
- Vysvětlení možností udělení souhlasu aplikacím v Microsoft Entra ID
- Principy souhlasu uživatele a správce
- Ukázky kódu MSAL
Další krok
Nasazení aplikací Java WebSphere do tradičního prostředí WebSphere na virtuálních počítačích Azure