Zabezpečení aplikací WebSphere v Javě pomocí skupin a deklarací identity skupin
V tomto článku se dozvíte, jak vytvořit aplikaci Java WebSphere, která přihlašuje uživatele pomocí knihovny MSAL (Microsoft Authentication Library) 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:
Klientská aplikace používá MSAL pro Javu (MSAL4J) k přihlášení uživatelů k tenantovi Microsoft Entra ID a získání tokenu ID od Microsoft Entra ID. Token ID potvrzuje, že se uživatel ověřuje v tomto tenantovi. Aplikace chrání své trasy podle stavu ověřování uživatele a členství ve skupině.
Video, které popisuje tento scénář, najdete v tématu Implementace autorizace v aplikacích pomocí rolí aplikací, skupin zabezpečení, oborů a rolí adresáře.
Požadavky
- Sada JDK verze 8 nebo vyšší
- Maven 3
- Tenant Microsoft Entra ID. Další informace naleznete v tématu Získání tenanta Microsoft Entra ID.
- Uživatelský účet ve vašem vlastním tenantovi Microsoft Entra ID.
- Dvě skupiny zabezpečení a
GroupMember
obsahující uživatele,GroupAdmin
se kterými chcete testovat.
Doporučení
- Znalost Javy / Jakarta Servlets.
- Znalost terminálu Linux/OSX
- jwt.ms pro kontrolu tokenů.
- Fiddler pro monitorování síťové aktivity a řešení potíží.
- Sledujte blog Microsoft Entra ID a sledujte aktuální informace o nejnovějším vývoji.
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 úložiště ms-identity-msal-java-samples , stáhněte si ho jako .zip soubor a extrahujte 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.
Registrace ukázkové aplikace v 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 webu Azure Portal a pak vyberte Přepnout adresář a změňte relaci na požadovaného tenanta Microsoft Entra ID.
Registrace aplikace (java-servlet-webapp-groups)
Nejprve zaregistrujte novou aplikaci na webu Azure Portal podle pokynů v rychlém startu: Registrace aplikace na platformě Microsoft Identity Platform.
Potom pomocí následujících kroků dokončete registraci:
Přejděte na stránku Microsoft identity platform pro vývojáře Registrace aplikací.
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 pro zobrazení uživatelům aplikace ,
java-servlet-webapp-groups
například . - V části Podporované typy účtů vyberte Pouze účty v tomto organizačním adresáři.
- V části Identifikátor URI přesměrování vyberte v poli se seznamem web a zadejte následující identifikátor URI přesměrování:
http://localhost:8080/msal4j-servlet-groups/auth/redirect
.
- V části Název zadejte smysluplný název aplikace pro zobrazení uživatelům aplikace ,
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 jednu z dostupných dob trvání: Za 1 rok, Za 2 roky nebo Nikdy nevyprší platnost.
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ě oprávnění rozhraní API a otevřete stránku a přidejte 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 v seznamu User.Read a GroupMember.Read.All. V případě potřeby použijte vyhledávací pole.
Vyberte Přidat oprávnění.
GroupMember.Read.All
vyžaduje souhlas správce, takže vyberte Udělit nebo odvolat souhlas správce pro {tenant} a potom vyberte Ano , pokud se zobrazí dotaz, jestli chcete udělit souhlas pro požadovaná oprávnění pro všechny účty v tenantovi. K provedení této akce musíte být správcem tenanta Microsoft Entra ID.
Konfigurace aplikace (java-servlet-webapp-groups) pro použití registrace aplikace
Ke konfiguraci aplikace použijte následující postup:
Poznámka:
V následujících krocích ClientID
je stejný jako Application ID
nebo AppId
.
Otevřete projekt v integrovaném vývojovém prostředí (IDE).
Otevřete soubor ./src/main/resources/authentication.properties.
Vyhledejte řetězec
{enter-your-tenant-id-here}
. Pokud jste aplikaci zaregistrovali jenom s účty v tomto organizačním adresáři , nahraďte stávající hodnotu SVÝM ID tenanta Microsoft Entra.Vyhledejte řetězec
{enter-your-client-id-here}
a nahraďte existující hodnotu ID aplikace neboclientId
java-servlet-webapp-groups
aplikace zkopírovanou z webu Azure Portal.Najděte řetězec
{enter-your-client-secret-here}
a nahraďte existující hodnotu hodnotou, kterou jste uložili při vytvářeníjava-servlet-webapp-groups
aplikace, na webu Azure Portal.
Konfigurace skupin zabezpečení
Máte k dispozici následující možnosti pro další konfiguraci aplikací pro příjem deklarací identity 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 aplikace 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.
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 Konfigurace aplikace tak, aby přijímala hodnoty deklarací identity skupin z filtrované sady skupin, ke kterým může být uživatel přiřazen. Tato možnost není dostupná v edici Microsoft Entra ID Free.
Poznámka:
Pokud chcete získat místní skupinu samAccountName
nebo On Premises Group Security Identifier
místo ID skupiny, přečtěte si část Požadavky pro použití atributů skupiny synchronizovaných ze služby Active Directory v části Konfigurace deklarací identity 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 a otevřete stránku, kde můžete nakonfigurovat tokeny poskytnuté deklaracemi identity vydané vaší aplikaci.
Výběrem možnosti Přidat deklaraci identity skupin otevřete obrazovku Upravit deklarace 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í neguje účinek možnosti Skupiny zabezpečení.
V části ID vyberte ID skupiny. Tento výběr způsobí, že ID Microsoft Entra odešle ID objektu skupin, ke kterým je uživatel přiřazený v deklaraci identity 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 nadlimitním využitím .
Poznámka:
Tato funkce není dostupná v edici Microsoft Entra ID Free.
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 a otevřete stránku, kde můžete nakonfigurovat tokeny poskytnuté deklaracemi identity vydané vaší aplikaci.
Výběrem možnosti Přidat deklaraci identity skupin otevřete obrazovku Upravit deklarace identity skupin.
Vyberte Skupiny přiřazené k aplikaci.
Volba dalších možností , jako jsou skupiny zabezpečení nebo všechny skupiny (včetně distribučních seznamů, ale ne skupin přiřazených k aplikaci) – neguje výhody, které aplikace odvozuje od výběru této možnosti.
V části ID vyberte ID skupiny. Výsledkem tohoto výběru je, že Microsoft Entra ID odesílá ID objektu skupin, ke kterým je uživatel přiřazený v deklaraci identity skupiny tokenu ID.
Pokud zveřejňujete webové rozhraní API pomocí možnosti Zveřejnit rozhraní API , můžete také zvolit možnost ID skupiny v části Přístup . Výsledkem této možnosti je, že Microsoft Entra ID odesílá ID objektu skupin, ke kterým je uživatel přiřazený v deklaraci skupiny přístupového 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
Managed application in ...
. Když vyberete tento odkaz, přejdete na stránku Přehled podnikových aplikací přidruženou k instančnímu objektu aplikace v tenantovi, ve kterém jste ho 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ěrem možnosti Vybrat dokončíte výběr skupin.
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.
Výběrem možnosti Vlastnosti v navigačním podokně otevřete stránku se základními vlastnostmi aplikace. Nastavte požadované přiřazení uživatele? Příznak Ano.
Důležité
Když nastavíte přiřazení uživatele? Na ano, Microsoft Entra ID zkontroluje, že se k aplikaci můžou přihlásit jenom uživatelé přiřazení k 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é
Pokud jste na stránce Konfigurace tokenu zvolili jinou možnost než groupID , například DNSDomain\sAMAccountName, měli byste název skupiny zadat v následujících krocích – contoso.com\Test Group
například – místo ID objektu:
Otevřete soubor ./src/main/resources/authentication.properties.
Vyhledejte řetězec
{enter-your-admins-group-id-here}
a nahraďte existující hodnotu IDGroupAdmin
objektu skupiny, kterou jste zkopírovali z webu Azure Portal. Odeberte složené závorky také ze zástupné hodnoty.Vyhledejte řetězec
{enter-your-users-group-id-here}
a nahraďte existující hodnotu IDGroupMember
objektu skupiny, kterou jste zkopírovali z webu Azure Portal. Odeberte složené závorky také ze zástupné hodnoty.
Sestavení ukázky
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.
Spuštění ukázky
Tyto pokyny předpokládají, že jste nainstalovali WebSphere a nastavili server. Pokyny najdete v tématu Nasazení aplikačního serveru WebSphere (tradičního) clusteru ve službě Azure Virtual Machines pro základní nastavení 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 do souboru authentication.properties vaší aplikace a změňte hodnotu
app.homePage
na adresu URL serveru a číslo portu, které chcete použít, jak je znázorněno v následujícím příkladu:# 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 package
Po 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 jste ji nastavili na webu Azure Portal jako hodnotu identifikátoru URI přesměrování na kartě Ověřování .
Přejděte na stránku Microsoft identity platform pro vývojáře Registrace aplikací.
Pomocívyhledávacího
java-servlet-webapp-authentication
Výběrem jejího názvu otevřete registraci aplikace.
Zvolte Ověřování z nabídky příkazů.
V části Identifikátory URI pro přesměrování webu - vyberte Přidat identifikátor URI.
Vyplňte identifikátor URI aplikace, připojte /auth/redirect –
https://<server-url>:<port-number>/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.
Zvolte soubor .war, který jste vytvořili, a pak vyberte Další, dokud se nedostanete ke kořenovému kontextu mapy pro krok instalace webových modulů. Ostatní výchozí nastavení by měla být v pořádku.
Pro kořen kontextu ho nastavte na stejnou hodnotu jako za číslem portu v identifikátoru URI přesměrování, který jste nastavili v ukázkové konfiguraci nebo registraci aplikace Azure. To znamená, že pokud je
http://<server-url>:9080/msal4j-servlet-auth/
identifikátor URI přesměrování , pak by měl býtmsal4j-servlet-auth
kontextový kořen .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
http://<server-url>:9080/{whatever you set as the context root}
aplikaci a měli byste ji vidět.
Zkoumání ukázky
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 přečte přihlášení při prvním spuštění aplikace.
- 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 se teď zobrazuje odhlásit a zobrazit vaše uživatelské jméno.
- Výběrem podrobností o tokenu ID zobrazíte některé dekódované deklarace identity 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 ke koncovým bodům chráněným skupinám.
- Pokud je přihlášený uživatel ve
GroupAdmin
skupině, může uživatel zadat obě stránky. - Pokud je přihlášený uživatel ve
GroupMember
skupině, může uživatel zadat jenom stránku Běžný uživatel . - Pokud je přihlášený uživatel v žádné skupině, nemůže získat přístup k žádné ze dvou stránek.
- Pokud je přihlášený uživatel ve
- Pomocí tlačítka v rohu se odhlaste.
- Po odhlášení vyberte podrobnosti o tokenu ID a všimněte si, že aplikace zobrazí
401: unauthorized
místo deklarací identity tokenu ID, když uživatel nemá autorizaci.
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 v tokenu ID existuje příliš mnoho skupin pro emise, použije ukázka sadu Microsoft Graph SDK pro Javu k získání dat členství ve skupinách z Microsoft Graphu. Na základě skupin, do nichž uživatel patří, má přihlášený uživatel přístup buď k žádné, jedné nebo obou chráněných stránek a Admins Only
Regular Users
.
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 pomocných rutin a složek authservlets ve složce src/main/java/com/microsoft/azuresamples/msal4j. Potřebujete také 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 .java končících ____Servlet.java. |
src/main/java/com/microsoft/azuresamples/msal4j/helpers/ | Pomocné třídy pro ověřování. |
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. |
Zpracování deklarace identity skupin v tokenech, včetně zpracování nadlimitního využití
Následující části popisují, jak aplikace zpracovává deklaraci identity skupin.
Deklarace identity skupin
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",]
...
}
Deklarace nadlimitního využití skupin
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 deklaraci nadlimitního využití v tokenu, která značí aplikaci dotazování rozhraní Microsoft Graph API pro načtení členství ve skupině uživatele, jak je znázorněno v následujícím příkladu:
{
...
"_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živatele
objectId
zadaného ve skriptu BulkCreateGroups.ps1 .Když spustíte tuto ukázku a dojde k nadlimitnímu využití, zobrazí
_claim_names
se 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 Konfigurace aplikace tak, aby přijímala hodnoty deklarací identity 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 nadlimitnímu využití skupiny, doporučujeme použít následující kroky ke zpracování deklarace identity skupin ve vašem tokenu:
- Zkontrolujte deklaraci identity
_claim_names
s jednou z hodnot, které jsou skupinami. Tato deklarace identity označuje nadlimitní využití. - Pokud se najde, zavolejte koncový bod určený k
_claim_sources
načtení skupin uživatelů. - Pokud se žádná nenašla, podívejte se na deklaraci identity skupin pro skupiny uživatele.
- Zkontrolujte deklaraci identity
Poznámka:
Zpracování nadlimitního využití vyžaduje volání Microsoft Graphu ke čtení členství ve skupinách přihlášených uživatelů, takže vaše aplikace musí mít oprávnění GroupMember.Read.All pro funkci getMemberObjects , aby se úspěšně spustila.
Další informace o programování pro Microsoft Graph najdete ve videu Úvod do Microsoft Graphu pro vývojáře.
ConfidentialClientApplication
Instance ConfidentialClientApplication
se vytvoří v souboru AuthHelper.java , jak je znázorněno v následujícím příkladu. 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 vytváření instancí 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, která zahrnuje 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řihlášení je odeslání požadavku na
/authorize
koncový bod pro vašeho tenanta Microsoft Entra ID. Instance MSAL4JConfidentialClientApplication
slouží 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:
AuthorizationRequestUrlParameters
: Parametry, které musí být nastaveny pro sestavení AuthorizationRequestUrl.REDIRECT_URI
: Kde Microsoft Entra přesměruje prohlížeč – spolu s ověřovacím kódem – po shromáždění přihlašovacích údajů uživatele. Musí odpovídat identifikátoru URI přesměrování v registraci aplikace Microsoft Entra ID na webu Azure Portal.SCOPES
: Obory jsou oprávnění požadovaná aplikací.- Za normálních okolností stačí tři obory
openid profile offline_access
pro příjem odpovědi tokenu ID. - Úplný seznam oborů požadovaných aplikací najdete v souboru authentication.properties . Můžete přidat další obory, například
User.Read
.
- Za normálních okolností stačí tři obory
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.
Instance
ConfidentialClientApplication
pak tento autorizační kód pro token ID a přístupový token vymění z 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:
AuthorizationCodeParameters
: Parametry, které musí být nastaveny pro výměnu autorizačního kódu pro ID nebo přístupový token.authCode
: Autorizační kód přijatý v koncovém bodu přesměrování.REDIRECT_URI
: Identifikátor URI přesměrování použitý v předchozím kroku musí být znovu předán.SCOPES
: Obory použité v předchozím kroku musí být předány znovu.
Pokud
acquireToken
je deklarace identity tokenu úspěšné, extrahují se. Pokud kontrola nesouvisení projde, výsledky se umístí docontext
instanceIdentityContextData
relace a uloží se do relace. Aplikace pak může vytvořitIdentityContextData
instanci z relace prostřednictvím instanceIdentityContextAdapterServlet
, kdy k ní potřebuje přístup, jak je znázorněno v následujícím kódu:// 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 extrahovat členství ve skupinách voláním
context.getGroups()
pomocí instanceIdentityContextData
.Pokud je uživatel členem příliš velkého počtu skupin – více než 200 – může být volání
context.getGroups()
prázdné, pokud ne pro voláníhandleGroupsOverage()
. Mezitím se vrátítrue
,context.getGroupsOverage()
signalizovat, že došlo k nadlimitní využití a že získání úplného seznamu skupin vyžaduje volání Do Microsoft Graphu. Podívejte se na metoduhandleGroupsOverage()
v AuthHelper.java a podívejte se, jak tato aplikace používácontext.setGroups()
, když existuje nadlimitní využití.
Ochrana tras
V AuthenticationFilter.java se dozvíte, jak ukázková aplikace filtruje přístup k trasám. V souboru app.protect.authenticated
authentication.properties vlastnost obsahuje trasy oddělené čárkami, ke kterým mají přístup pouze ověření uživatelé, jak je znázorněno v následujícím příkladu:
# for example, /token_details requires any user to be signed in and does not require special groups claim
app.protect.authenticated=/token_details
Všechny trasy uvedené v sadách pravidel oddělených čárkami jsou app.protect.groups
také mimo limity pro neověřené uživatele, jak je znázorněno v následujícím příkladu. Tyto trasy ale obsahují také seznam členství ve skupinách oddělených mezerami. 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
Rozsahy
Obory říkají Microsoft Entra ID úrovně přístupu, kterou aplikace požaduje.
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 souhlasí s jedním nebo více obory a získá token, jsou obory s souhlasem zakódovány do výsledného access_token
.
Obory požadované aplikací najdete v tématu authentication.properties. Ve výchozím nastavení aplikace nastaví hodnotu oborů na GroupMember.Read.All
. 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í
- Microsoft Authentication Library (MSAL) pro Javu
- Microsoft Identity Platform (Microsoft Entra ID pro vývojáře)
- Rychlý start: registrace aplikace pomocí platformy identity Microsoft
- Principy prostředí souhlasu aplikace Microsoft Entra ID
- Vysvětlení souhlasu uživatele a správce
- Ukázky kódu MSAL
Další krok
Nasazení aplikací Java WebSphere do tradiční webSphere ve službě Azure Virtual Machines