Zabezpečení aplikací EAP Java JBoss pomocí rolí a deklarací identity rolí
Tento článek ukazuje aplikaci Java JBoss EAP, která používá OpenID Connect pro přihlášení uživatelů a role aplikací Microsoft Entra ID (role aplikací) pro autorizaci.
Tato aplikace implementuje řízení přístupu na základě role (RBAC) pomocí aplikačních rolí a funkcí deklarací rolí v Microsoft Entra ID. Dalším přístupem je použití skupin a deklarací identity skupin Microsoft Entra ID. Skupiny a role aplikací Microsoft Entra ID se vzájemně nevylučují. Můžete je použít k zajištění jemně odstupňovaného řízení přístupu.
RBAC můžete také použít s rolemi aplikací a deklaracemi rolí k bezpečnému vynucování zásad autorizace.
Video, které popisuje tento scénář a tuto ukázku, najdete v tématu Implementace autorizace v aplikacích pomocí rolí aplikací, skupin zabezpečení, oborů a rolí adresáře.
Další informace o tom, jak protokoly fungují v tomto scénáři a v jiných scénářích, najdete v tématu Ověřování a autorizace.
Tato aplikace používá MSAL pro Javu (MSAL4J) k přihlášení uživatele a získání tokenu ID z Microsoft Entra ID.
Tato ukázka nejprve používá knihovnu MSAL pro Javu (MSAL4J) k přihlášení uživatele. Na domovské stránce se uživateli zobrazí možnost zobrazení deklarací identity v tokenech ID. Tato aplikace také umožňuje uživatelům zobrazit stránku privilegovaného správce nebo běžnou stránku uživatele v závislosti na přiřazené roli aplikace. Cílem je poskytnout příklad toho, jak v rámci aplikace přístup k určitým funkcím nebo stránkám je omezený na podmnožinu uživatelů v závislosti na tom, do jaké role patří.
Tento druh autorizace se implementuje pomocí RBAC. V případě RBAC uděluje správce oprávnění rolím, nikoli jednotlivým uživatelům nebo skupinám. Správce pak může přiřadit role různým uživatelům a skupinám a řídit, kdo má přístup k určitému obsahu a funkcím.
Tato ukázková aplikace definuje následující dvě role aplikace:
PrivilegedAdmin
: Oprávnění pro přístup pouze správců a stránek Běžných uživatelů.RegularUser
: Oprávnění pro přístup na stránku Běžní uživatelé .
Tyto role aplikace jsou definovány na webu Azure Portal v manifestu registrace aplikace. Když se uživatel přihlásí k aplikaci, id Microsoft Entra vygeneruje deklaraci rolí pro každou roli udělenou jednotlivě uživateli ve formě členství v rolích.
Uživatele a skupiny můžete přiřadit k rolím prostřednictvím webu Azure Portal.
Poznámka:
Deklarace identity rolí nejsou k dispozici pro uživatele typu host v tenantovi, pokud https://login.microsoftonline.com/common/
se koncový bod používá jako autorita pro přihlášení uživatelů. Musíte se přihlásit uživatele k tenantovi koncovému bodu, například https://login.microsoftonline.com/tenantid
.
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, pokud chcete pracovat jenom s účty v adresáři organizace – to znamená režim s jedním tenantem. Pokud jste ještě ve svém tenantovi nevytvořili uživatelský účet, měli byste to udělat předtím, než budete pokračovat. Další informace najdete v tématu Vytváření, pozvání a odstraňování uživatelů.
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/roles
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-roles)
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-roles
například .V části Podporované typy účtů vyberte jednu z následujících možností:
- V tomto organizačním adresáři vyberte Účty jenom v případě, že vytváříte aplikaci pro použití pouze uživateli ve vašem tenantovi – to znamená aplikace s jedním tenantem .
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-roles/auth/redirect
.
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.
Definování aplikačních rolí
K definování rolí aplikace použijte následující kroky:
Stále ve stejné registraci aplikace vyberte v navigačním podokně role aplikace.
Vyberte Vytvořit roli aplikace a zadejte následující hodnoty:
- Jako zobrazovaný název zadejte vhodný název, například PrivilegedAdmin.
- Pro povolené typy členů zvolte Možnost Uživatel.
- Jako hodnotu zadejte PrivilegedAdmin.
- Jako popis zadejte PrivilegedAdmins, kteří můžou zobrazit stránku správce.
Vyberte Vytvořit roli aplikace a zadejte následující hodnoty:
- Jako zobrazovaný název zadejte vhodný název, například RegularUser.
- Pro povolené typy členů zvolte Možnost Uživatel.
- Jako hodnotu zadejte RegularUser.
- Jako popis zadejte RegularUsers, kteří mohou zobrazit stránku uživatele.
Výběrem možnosti Použít změny uložte.
Přiřazení uživatelů k rolím aplikace
Pokud chcete přidat uživatele do dříve definované role aplikace, postupujte podle těchto pokynů: Přiřaďte uživatele a skupiny k rolím.
Konfigurace aplikace (java-servlet-webapp-roles) 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).
Vyhledejte řetězec
{enter-your-tenant-id-here}
. Nahraďte existující hodnotu ID tenanta Microsoft Entra ID.Vyhledejte řetězec
{enter-your-client-id-here}
a nahraďte existující hodnotu ID aplikace neboclientId
java-servlet-webapp-call-graph
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-roles
aplikace, na webu Azure Portal.app.roles
Najděte vlastnost a ujistěte se, že je hodnota nastavená ,app.roles=admin PrivilegedAdmin, user RegularUser
nebo nahraďte názvy konkrétních rolí.
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
Následující části ukazují, jak nasadit ukázku do služby Aplikace Azure Service.
Požadavky
Modul plug-in Maven pro aplikace Aplikace Azure Service
Pokud maven není vaším upřednostňovaným nástrojem pro vývoj, projděte si následující podobné kurzy, které používají jiné nástroje:
Konfigurace modulu plug-in Maven
Proces nasazení do služby Aplikace Azure Service používá vaše přihlašovací údaje Azure z Azure CLI automaticky. Pokud se Azure CLI nenainstaluje místně, pak se modul plug-in Maven ověří pomocí OAuth nebo přihlášení zařízení. Další informace najdete v tématu ověřování pomocí modulů plug-in Maven.
Ke konfiguraci modulu plug-in použijte následující postup:
Spuštěním příkazu Maven zobrazeného vedle konfigurace nasazení Tento příkaz vám pomůže nastavit operační systém služby App Service, verzi Javy a verzi Tomcat.
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:config
Pokud chcete vytvořit novou konfiguraci spuštění, stiskněte Y a pak stiskněte Enter.
Pro definování hodnoty pro operační systém stiskněte 2 pro Linux a pak stiskněte Enter.
Pro definici hodnoty javaVersion stiskněte 2 pro Javu 11 a pak stiskněte Enter.
Pro define value for webContainer, press 1 for JBosseap7, then press Enter.
Pokud chcete definovat hodnotu pro pricingTier, stiskněte Enter a vyberte výchozí úroveň P1v3 .
Potvrďte akci stisknutím klávesy Y a pak stiskněte Enter.
Následující příklad ukazuje výstup procesu nasazení:
Please confirm webapp properties
AppName : msal4j-servlet-auth-1707220080695
ResourceGroup : msal4j-servlet-auth-1707220080695-rg
Region : centralus
PricingTier : P1v3
OS : Linux
Java Version: Java 11
Web server stack: JBosseap 7
Deploy to slot : false
Confirm (Y/N) [Y]:
[INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 26.196 s
[INFO] Finished at: 2024-02-06T11:48:16Z
[INFO] ------------------------------------------------------------------------
Jakmile potvrdíte volby, modul plug-in přidá konfiguraci modulu plug-in a požadované nastavení do souboru pom.xml projektu a nakonfiguruje aplikaci tak, aby běžela ve službě Aplikace Azure Service.
Relevantní část souboru pom.xml by měla vypadat podobně jako v následujícím příkladu:
<build>
<plugins>
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>>azure-webapp-maven-plugin</artifactId>
<version>x.xx.x</version>
<configuration>
<schemaVersion>v2</schemaVersion>
<resourceGroup>your-resourcegroup-name</resourceGroup>
<appName>your-app-name</appName>
...
</configuration>
</plugin>
</plugins>
</build>
Konfigurace služby App Service můžete upravit přímo ve vašem pom.xml. Některé běžné konfigurace jsou uvedeny v následující tabulce:
Vlastnost | Požadováno | Popis | Verze |
---|---|---|---|
schemaVersion |
false (nepravda) | Verze schématu konfigurace. Podporované hodnoty jsou v1 a v2 . |
1.5.2 |
subscriptionId |
false (nepravda) | ID předplatného. | 0.1.0+ |
resourceGroup |
true | Skupina prostředků Azure pro vaši aplikaci. | 0.1.0+ |
appName |
true | Název aplikace. | 0.1.0+ |
region |
false (nepravda) | Oblast, ve které se má aplikace hostovat. Výchozí hodnota je centralus . Platné oblasti najdete v tématu Podporované oblasti. |
0.1.0+ |
pricingTier |
false (nepravda) | Cenová úroveň vaší aplikace. Výchozí hodnota je P1v2 pro produkční úlohu. Doporučená minimální hodnota pro vývoj a testování v Javě je B2 . Další informace najdete v tématu Ceny služby App Service. |
0.1.0+ |
runtime |
false (nepravda) | Konfigurace prostředí runtime. Další informace najdete v tématu Podrobnosti o konfiguraci. | 0.1.0+ |
deployment |
false (nepravda) | Konfigurace nasazení. Další informace najdete v tématu Podrobnosti o konfiguraci. | 0.1.0+ |
Úplný seznam konfigurací najdete v referenční dokumentaci k modulu plug-in. Všechny moduly plug-in Azure Maven sdílejí společnou sadu konfigurací. Informace o těchto konfiguracích najdete v tématu Běžné konfigurace. Informace o konfiguracích specifických pro službu Aplikace Azure Najdete v tématu Aplikace Azure: Podrobnosti konfigurace.
Nezapomeňte uložit stranou appName
a resourceGroup
hodnoty pro pozdější použití.
Příprava aplikace na nasazení
Když nasadíte aplikaci do služby App Service, adresa URL pro přesměrování se změní na adresu URL pro přesměrování vaší nasazené instance aplikace. Pomocí následujícího postupu změňte tato nastavení v souboru vlastností:
Přejděte do souboru authentication.properties vaší aplikace a změňte hodnotu
app.homePage
na název domény nasazené aplikace, jak je znázorněno v následujícím příkladu. Pokud jste například v předchozím kroku zvoliliexample-domain
název aplikace, musíte tuto hodnotu použíthttps://example-domain.azurewebsites.net
app.homePage
. Ujistěte se, že jste také změnili protokol zhttp
nahttps
.# 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://<your-app-name>.azurewebsites.net
Po uložení tohoto souboru pomocí následujícího příkazu znovu sestavte aplikaci:
mvn clean package
Důležité
V tomto souboru authentication.properties máte nastavení pro svůj aad.secret
. Není vhodné tuto hodnotu nasadit do služby App Service. Ani to není vhodné nechat tuto hodnotu v kódu a potenciálně ji odeslat do úložiště Git. Pokud chcete tuto hodnotu tajného kódu odebrat, najdete podrobnější pokyny v části Nasazení do služby App Service – Odebrání tajného kódu . Tyto pokyny přidávají další kroky pro nasdílení hodnoty tajného kódu do služby Key Vault a použití odkazů služby Key Vault.
Aktualizace registrace aplikace Microsoft Entra ID
Vzhledem k tomu, že identifikátor URI přesměrování se změní na nasazenou aplikaci na službu Aplikace Azure Service, musíte také změnit identifikátor URI přesměrování v registraci aplikace Microsoft Entra ID. K provedení této změny použijte následující postup:
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 a připojte
/auth/redirect
ho ,https://<your-app-name>.azurewebsites.net/auth/redirect
například .Zvolte Uložit.
Nasazení aplikace
Teď jste připraveni nasadit aplikaci do služby Aplikace Azure Service. Pomocí následujícího příkazu se ujistěte, že jste přihlášení ke svému prostředí Azure a spusťte nasazení:
az login
S veškerou konfigurací připravenou v souboru pom.xml teď můžete pomocí následujícího příkazu nasadit aplikaci v Javě do Azure:
mvn package azure-webapp:deploy
Po dokončení nasazení je vaše aplikace připravená na http://<your-app-name>.azurewebsites.net/
adrese . Otevřete adresu URL v místním webovém prohlížeči, kde byste měli vidět úvodní stránku msal4j-servlet-auth
aplikace.
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.
- Pokud chcete stránku zobrazit
/admin_only
, vyberte Pouze správci. Tuto stránku můžou zobrazit jenom uživatelé s rolíPrivilegedAdmin
aplikace. V opačném případě se zobrazí zpráva o chybě autorizace. - Výběrem možnosti Běžní uživatelé zobrazte
/regular_user
stránku. Tuto stránku můžou zobrazit jenom uživatelé s rolíRegularUser
PrivilegedAdmin
aplikace. V opačném případě se zobrazí zpráva o chybě autorizace. - Pomocí tlačítka v rohu se odhlaste.
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 rolí. Na základě deklarace identity rolí může přihlášený uživatel přistupovat k žádným, jednomu nebo oběma chráněným stránkám Admins Only
a Regular Users
.
Pokud chcete replikovat chování této ukázky, 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/roles/ | 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 rolí v tokenu ID
Deklarace identity rolí tokenu obsahuje názvy rolí, ke kterým je přihlášený uživatel přiřazený, jak je znázorněno v následujícím příkladu:
{
...
"roles": [
"Role1",
"Role2",]
...
}
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 ID 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());
Ochrana tras
Informace o tom, jak ukázková aplikace filtruje přístup k trasám, najdete v tématu AuthenticationFilter.java. 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 roles claim(s)
app.protect.authenticated=/token_details
Všechny trasy uvedené v sadách pravidel oddělených čárkami jsou app.protect.roles
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í v rolích aplikací oddělených mezerami: Po ověření mají k těmto trasám přístup jenom uživatelé, kteří mají alespoň jednu z odpovídajících rolí.
# local short names for app roles - for example, sets admin to mean PrivilegedAdmin (useful for long rule sets defined in the next key, app.protect.roles)
app.roles=admin PrivilegedAdmin, user RegularUser
# A route and its corresponding <space-separated> role(s) that can access it; the start of the next route & its role(s) is delimited by a <comma-and-space-separator>
# this says: /admins_only can be accessed by PrivilegedAdmin, /regular_user can be accessed by PrivilegedAdmin role and the RegularUser role
app.protect.roles=/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. Tyto tři obory jsou ve výchozím nastavení požadovány knihovnou MSAL a podle id Microsoft Entra.
Více informací
- Microsoft Authentication Library (MSAL) pro Javu
- Microsoft Identity Platform
- 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
- Postupy: Přidání rolí aplikace do aplikace a jejich přijetí v tokenu
- Správa přiřazení uživatelů pro aplikaci v Microsoft Entra ID