Java Tomcat-alkalmazások védelme szerepkörök és szerepkör-jogcímek használatával
Ez a cikk egy Java Tomcat-alkalmazást mutat be, amely OpenID Csatlakozás használatával jelentkezik be a felhasználókba, és a Microsoft Entra id application Roles (alkalmazásszerepkörök) az engedélyezéshez.
Ez az alkalmazás szerepköralapú hozzáférés-vezérlést (RBAC) implementál a Microsoft Entra ID alkalmazásszerepköreivel és szerepkör-jogcímekkel. Egy másik módszer a Microsoft Entra azonosítócsoportok és csoportjogcímek használata. A Microsoft Entra-azonosító csoportok és alkalmazásszerepkörök nem zárják ki egymást. Mindkettőt használhatja a részletes hozzáférés-vezérléshez.
Az RBAC-t alkalmazásszerepkörökkel és szerepkör-jogcímekkel is használhatja az engedélyezési szabályzatok biztonságos érvényesítéséhez.
A forgatókönyvet és a mintát bemutató videóért lásd : Engedélyezés megvalósítása az alkalmazásokban alkalmazásszerepkörök, biztonsági csoportok, hatókörök és címtárszerepkörök használatával.
További információ a protokollok működéséről ebben a forgatókönyvben és más forgatókönyvekben: Hitelesítés és engedélyezés.
Ez az alkalmazás az MSAL for Java (MSAL4J) használatával jelentkezik be egy felhasználóba, és beszerez egy azonosító jogkivonatot a Microsoft Entra-azonosítóból.
Ez a minta először az MSAL for Java (MSAL4J) használatával jelentkezik be a felhasználóba. A kezdőlapon megjelenik egy lehetőség, a amelyen a felhasználó megtekintheti a jogcímeket az azonosító jogkivonataiban. Ez az alkalmazás azt is lehetővé teszi, hogy a felhasználók a hozzárendelt alkalmazásszerepkörtől függően megtekinthessenek egy kiemelt rendszergazdai lapot vagy egy normál felhasználói lapot. Az ötlet az, hogy egy alkalmazáson belül egy adott funkcióhoz vagy laphoz való hozzáférés hogyan korlátozódik a felhasználók részhalmazaira attól függően, hogy melyik szerepkörhöz tartoznak.
Ez a fajta engedélyezés RBAC használatával valósul meg. Az RBAC-vel a rendszergazda engedélyeket ad a szerepköröknek, nem pedig az egyes felhasználóknak vagy csoportoknak. A rendszergazda ezután szerepköröket rendelhet különböző felhasználókhoz és csoportokhoz, így szabályozhatja, hogy ki férhet hozzá bizonyos tartalmakhoz és funkciókhoz.
Ez a mintaalkalmazás a következő két alkalmazásszerepkört határozza meg:
PrivilegedAdmin
: Csak a Rendszergazda és a Normál felhasználók lap elérésére jogosult.RegularUser
: Jogosult a Normál felhasználók lap elérésére.
Ezek az alkalmazásszerepkörök az Azure Portalon vannak definiálva az alkalmazás regisztrációs jegyzékében. Amikor egy felhasználó bejelentkezik az alkalmazásba, a Microsoft Entra-azonosító szerepkör-jogcímet bocsát ki a felhasználónak egyenként, szerepkör-tagság formájában megadott szerepkörökre vonatkozóan.
Felhasználókat és csoportokat rendelhet szerepkörökhöz az Azure Portalon keresztül, vagy programozott módon a Microsoft Graph és a Microsoft Azure AD PowerShell használatával. Ez a cikk mindkét technikát ismerteti.
Feljegyzés
A szerepkörjogcímek nem jelennek meg a bérlő vendégfelhasználói számára, ha a https://login.microsoftonline.com/common/
végpontot használják a felhasználók bejelentkezésére. Be kell jelentkeznie egy felhasználónak egy bérlői végpontra, például https://login.microsoftonline.com/tenantid
.
Előfeltételek
- JDK 8-os vagy újabb verzió
- Maven 3
- Egy Microsoft Entra ID-bérlő. További információ: Microsoft Entra ID-bérlő lekérése.
- Egy felhasználói fiók a saját Microsoft Entra-azonosítójú bérlőjében, ha csak a szervezeti címtárban lévő fiókokkal szeretne dolgozni , azaz egybérlős módban. Ha még nem hozott létre felhasználói fiókot a bérlőjében, ezt a folytatás előtt tegye meg. További információ: Felhasználók létrehozása, meghívása és törlése.
Ajánlások
- Néhány ismerős a Java / Jakarta Servlets.
- A Linux/OSX terminál vagy a Windows PowerShell ismerete.
- jwt.ms a jogkivonatok vizsgálatához.
- A Fiddler a hálózati tevékenység figyeléséhez és a hibaelhárításhoz.
- Kövesse a Microsoft Entra ID blogot , hogy naprakész maradjon a legújabb fejlesztésekkel kapcsolatban.
A minta beállítása
Az alábbi szakaszok bemutatják, hogyan állíthatja be a mintaalkalmazást.
A mintaadattár klónozása vagy letöltése
A minta klónozásához nyisson meg egy Bash-ablakot, és használja a következő parancsot:
git clone https://github.com/Azure-Samples/ms-identity-java-servlet-webapp-authentication.git
cd 3-Authorization-II/roles
Másik lehetőségként keresse meg az ms-identity-java-servlet-webapp-authentication adattárat, majd töltse le .zip fájlként, és bontsa ki a merevlemezre.
Fontos
A Windows fájlelérési útvonalának korlátozásainak elkerülése érdekében klónozza vagy bontsa ki az adattárat a merevlemez gyökerének közelében található könyvtárba.
A mintaalkalmazás regisztrálása a Microsoft Entra ID-bérlővel
Ebben a mintában egy projekt szerepel. Ha regisztrálni szeretné az alkalmazást az Azure Portalon, kövesse a manuális konfigurációs lépéseket, vagy használjon PowerShell-szkriptet. A szkript a következő feladatokat hajtja végre:
- Létrehozza a Microsoft Entra ID-alkalmazásokat és a kapcsolódó objektumokat, például jelszavakat, engedélyeket és függőségeket.
- Módosítja a projektkonfigurációs fájlokat.
- Alapértelmezés szerint beállít egy olyan alkalmazást, amely csak a szervezeti címtárban lévő fiókokkal működik.
A PowerShell-szkript futtatásához kövesse az alábbi lépéseket:
Windows rendszeren nyissa meg a PowerShellt, és keresse meg a klónozott könyvtár gyökerét.
A PowerShell végrehajtási szabályzatának beállításához használja a következő parancsot:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force
A konfigurációs szkript futtatásához használja az alábbi parancsokat:
cd .\AppCreationScripts\ .\Configure.ps1
Feljegyzés
A szkriptek futtatásának egyéb módjait az alkalmazáslétrehozási szkriptek ismertetik. A szkriptek emellett útmutatást nyújtanak az automatikus alkalmazásregisztrációhoz, konfiguráláshoz és eltávolításhoz, ami segíthet a CI/CD-forgatókönyvekben.
Az alkalmazás (java-servlet-webapp-roles) konfigurálása az alkalmazásregisztráció használatához
Az alkalmazás konfigurálásához kövesse az alábbi lépéseket:
Feljegyzés
A következő lépésekben ugyanaz, ClientID
mint Application ID
vagy AppId
.
Nyissa meg a projektet az IDE-ben.
Nyissa meg a authentication.properties fájlt.
Keresse meg a sztringet
{enter-your-tenant-id-here}
. Cserélje le a meglévő értéket a Microsoft Entra-azonosító bérlőazonosítóra.Keresse meg a sztringet
{enter-your-client-id-here}
, és cserélje le a meglévő értéket az alkalmazásazonosítóra vagyclientId
azjava-servlet-webapp-call-graph
Azure Portalról másolt alkalmazásra.Keresse meg a sztringet
{enter-your-client-secret-here}
, és cserélje le a meglévő értéket az alkalmazás létrehozása során mentett értékre azjava-servlet-webapp-roles
Azure Portalon.Keresse meg a
app.roles
tulajdonságot, és győződjön meg arról, hogyapp.roles=admin PrivilegedAdmin, user RegularUser
az érték be van állítva, vagy cserélje le az adott szerepkörök nevét.
A minta összeállítása
Ha a mintát a Maven használatával szeretné létrehozni, keresse meg a minta pom.xml fájljának könyvtárát, majd futtassa a következő parancsot:
mvn clean package
Ez a parancs létrehoz egy .war fájlt, amelyet számos alkalmazáskiszolgálón futtathat.
Minta futtatása
Az alábbi szakaszok bemutatják, hogyan helyezheti üzembe a mintát Azure-alkalmazás szolgáltatásban.
Előfeltételek
Maven beépülő modul Azure-alkalmazás Service-alkalmazásokhoz
Ha nem a Maven az előnyben részesített fejlesztési eszköz, tekintse meg az alábbi hasonló oktatóanyagokat, amelyek más eszközöket használnak:
A Maven beépülő moduljának konfigurálása
A Azure-alkalmazás Szolgáltatásban való üzembe helyezéskor az üzembe helyezés automatikusan az Azure CLI-ből származó Azure-hitelesítő adatokat használja. Ha az Azure CLI nincs helyileg telepítve, akkor a Maven beépülő modul az OAuth vagy az eszköz bejelentkezésével hitelesít. További információ: Hitelesítés a Maven beépülő modulokkal.
A beépülő modul konfigurálásához kövesse az alábbi lépéseket:
Futtassa a következő parancsot az üzembe helyezés konfigurálásához. Ez a parancs segít a Azure-alkalmazás szolgáltatás operációs rendszerének, a Java-verziónak és a Tomcat-verziónak a beállításában.
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:config
Új futtatási konfiguráció létrehozásához nyomja le az Y billentyűt, majd nyomja le az Enter billentyűt.
Az operációs rendszer értékének definiálásához nyomja le az 1 billentyűt a Windowshoz, a Linuxhoz pedig 2 billentyűt, majd nyomja le az Enter billentyűt.
A JavaVersion értékének definiálásához nyomja le a 2 billentyűt a Java 11-hez, majd nyomja le az Enter billentyűt.
A webContainer értékének definiálásához nyomja le a 4 billentyűt a Tomcat 9.0-hoz, majd nyomja le az Enter billentyűt.
A pricingTier értékének meghatározásához nyomja le az Enter billentyűt az alapértelmezett P1v2 szint kiválasztásához.
A megerősítéshez nyomja le az Y billentyűt, majd nyomja le az Enter billentyűt.
Az alábbi példa az üzembehelyezési folyamat kimenetét mutatja be:
Please confirm webapp properties
AppName : msal4j-servlet-auth-1707209552268
ResourceGroup : msal4j-servlet-auth-1707209552268-rg
Region : centralus
PricingTier : P1v2
OS : Linux
Java Version: Java 11
Web server stack: Tomcat 9.0
Deploy to slot : false
Confirm (Y/N) [Y]: [INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 37.112 s
[INFO] Finished at: 2024-02-06T08:53:02Z
[INFO] ------------------------------------------------------------------------
Miután megerősítette a választási lehetőségeket, a beépülő modul hozzáadja a szükséges beépülő modulelemet és -beállításokat a projekt pom.xml fájljához, hogy konfigurálja az alkalmazást a Azure-alkalmazás Szolgáltatásban való futtatásra.
A pom.xml fájl releváns részének az alábbi példához hasonlóan kell kinéznie:
<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>
Az App Service konfigurációit közvetlenül a pom.xml módosíthatja. Néhány gyakori konfiguráció az alábbi táblázatban található:
Tulajdonság | Kötelező | Leírás |
---|---|---|
subscriptionId |
false | Az előfizetés azonosítója. |
resourceGroup |
true | Az alkalmazás Azure-erőforráscsoportja. |
appName |
true | Az alkalmazás neve. |
region |
false | Az a régió, amelyben az alkalmazást üzemeltetni szeretné. Az alapértelmezett érték centralus . Érvényes régiókért lásd: Támogatott régiók. |
pricingTier |
false | Az alkalmazás tarifacsomagja. Az alapértelmezett érték egy éles számítási feladathoz tartozik P1v2 . A Java-fejlesztés és -tesztelés ajánlott minimális értéke a B2 . További információkért tekintse meg az App Service díjszabását. |
runtime |
false | A futtatókörnyezet konfigurációja. További információ: Konfiguráció részletei. |
deployment |
false | Az üzembehelyezési konfiguráció. További információ: Konfiguráció részletei. |
A konfigurációk teljes listáját a beépülő modul referenciadokumentációjában találja. Az Összes Azure Maven beépülő modul közös konfigurációkat használ. Ezekről a konfigurációkról a Gyakori konfigurációk című témakörben olvashat. A Azure-alkalmazás Service-hez kapcsolódó konfigurációkért lásd: Azure-alkalmazás: Konfiguráció részletei.
Ügyeljen arra, hogy a későbbi használatra félretehesse az értékeket és resourceGroup
az appName
értékeket.
Az alkalmazás előkészítése az üzembe helyezéshez
Amikor üzembe helyezi az alkalmazást az App Service-ben, az átirányítási URL-cím az üzembe helyezett alkalmazáspéldány átirányítási URL-címére változik. A tulajdonságok fájljában a következő lépésekkel módosíthatja ezeket a beállításokat:
Keresse meg az alkalmazás authentication.properties fájlját, és módosítsa a
app.homePage
telepített alkalmazás tartománynevére az alábbi példában látható módon. Ha például az előző lépésben az alkalmazás nevét választottaexample-domain
, akkor most már használniahttps://example-domain.azurewebsites.net
kell azapp.homePage
értéket. Győződjön meg arról, hogy a protokollt is módosította a másikrahttp
https
.# 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
A fájl mentése után használja az alábbi parancsot az alkalmazás újraépítéséhez:
mvn clean package
Fontos
Ugyanebben a authentication.properties fájlban van egy beállítás az Ön aad.secret
számára. Nem ajánlott ezt az értéket az App Service-ben üzembe helyezni. Nem ajánlott ezt az értéket a kódban hagyni, és potenciálisan leküldni a git-adattárba. Ha el szeretné távolítani ezt a titkos értéket a kódból, részletesebb útmutatást az App Service-ben való üzembe helyezés – Titkos kódok eltávolítása című szakaszban talál. Ez az útmutató további lépéseket tartalmaz a titkos kulcs értékének a Key Vaultba való leküldéséhez és a Key Vault-referenciák használatához.
A Microsoft Entra ID alkalmazásregisztráció frissítése
Mivel az átirányítási URI Azure-alkalmazás Szolgáltatásra változik, a Microsoft Entra ID alkalmazásregisztrációjában is módosítania kell az átirányítási URI-t. A módosítás végrehajtásához kövesse az alábbi lépéseket:
Lépjen a Microsoft Identitásplatform fejlesztőknek Alkalmazásregisztrációk lapra.
A keresőmező használatával keresse meg az alkalmazásregisztrációt – például
java-servlet-webapp-authentication
.Nyissa meg az alkalmazásregisztrációt a nevének kiválasztásával.
Válassza a Hitelesítés lehetőséget a menüben.
A Webes - átirányítási URI-k szakaszban válassza az URI hozzáadása lehetőséget.
Töltse ki az alkalmazás URI-ját, hozzáfűzve
/auth/redirect
példáulhttps://<your-app-name>.azurewebsites.net/auth/redirect
.Válassza a Mentés lehetőséget.
Az alkalmazás üzembe helyezése
Most már készen áll az alkalmazás üzembe helyezésére Azure-alkalmazás Service-ben. Az alábbi paranccsal győződjön meg arról, hogy bejelentkezett az Azure-környezetbe az üzembe helyezés végrehajtásához:
az login
Ha az összes konfiguráció készen áll a pom.xml fájlban, a következő paranccsal telepítheti a Java-alkalmazást az Azure-ban:
mvn package azure-webapp:deploy
Az üzembe helyezés befejezése után az alkalmazás készen áll a .http://<your-app-name>.azurewebsites.net/
Nyissa meg az URL-címet a helyi webböngészővel, ahol meg kell jelennie az msal4j-servlet-auth
alkalmazás kezdőlapjának.
A minta vizsgálata
A minta megismeréséhez kövesse az alábbi lépéseket:
- Figyelje meg a bejelentkezett vagy kijelentkezett állapotot a képernyő közepén.
- Válassza a sarokban található környezetérzékeny gombot. Ez a gomb beolvassa a bejelentkezést az alkalmazás első futtatásakor.
- A következő lapon kövesse az utasításokat, és jelentkezzen be egy fiókkal a Microsoft Entra ID-bérlőben.
- A hozzájárulási képernyőn figyelje meg a kért hatóköröket.
- Figyelje meg, hogy a környezetfüggő gomb most kijelentkezik , és megjeleníti a felhasználónevét.
- Válassza az Azonosító jogkivonat részletei lehetőséget az azonosító jogkivonat egyes dekódolt jogcímeinek megtekintéséhez.
- Válassza Rendszergazda csak a
/admin_only
lap megtekintéséhez. Ezt a lapot csak az alkalmazásszerepkörrelPrivilegedAdmin
rendelkező felhasználók tekinthetik meg. Ellenkező esetben egy engedélyezési hibaüzenet jelenik meg. - Válassza a Normál felhasználók lehetőséget a
/regular_user
lap megtekintéséhez. Csak az alkalmazásszerepkörrelRegularUser
rendelkező felhasználókPrivilegedAdmin
tekinthetik meg ezt a lapot. Ellenkező esetben egy engedélyezési hibaüzenet jelenik meg. - A kijelentkezéshez használja a sarokban lévő gombot.
Tudnivalók a kódról
Ez a minta az MSAL for Java (MSAL4J) használatával jelentkeztet be egy felhasználót, és beszerez egy azonosító jogkivonatot, amely a szerepkör-jogcímet tartalmazhatja. A meglévő szerepkör-jogcímek alapján a bejelentkezett felhasználó a védett lapok egyikéhez vagy mindkét oldalához hozzáférhet, Admins Only
és Regular Users
.
Ha replikálni szeretné a minta viselkedését, az src/main/java/com/microsoft/azuresamples/msal4j mappába másolhatja a pom.xml fájlt, valamint a segítők és authservlets mappák tartalmát. Szüksége van a authentication.properties fájlra is. Ezek az osztályok és fájlok általános kódot tartalmaznak, amelyeket számos alkalmazásban használhat. A minta többi részét is másolhatja, de a többi osztály és fájl kifejezetten a minta céljának megfelelően van létrehozva.
Tartalom
Az alábbi táblázat a mintaprojekt mappájának tartalmát mutatja be:
Fájl/mappa | Leírás |
---|---|
AppCreationScripts/ | Szkriptek a Microsoft Entra ID-alkalmazásregisztrációk automatikus konfigurálásához. |
src/main/java/com/microsoft/azuresamples/msal4j/roles/ | Ez a könyvtár tartalmazza azokat az osztályokat, amelyek meghatározzák az alkalmazás háttérbeli üzleti logikáját. |
src/main/java/com/microsoft/azuresamples/msal4j/authservlets/ | Ez a könyvtár tartalmazza a bejelentkezéshez és a végpontok kijelentkezéshez használt osztályokat. |
____Servlet.java | Az összes elérhető végpont .java ____Servlet.java végződésű osztályokban van definiálva. |
src/main/java/com/microsoft/azuresamples/msal4j/helpers/ | Segédosztályok hitelesítéshez. |
AuthenticationFilter.java | A nem hitelesített kéréseket átirányítja a védett végpontokra egy 401-es lapra. |
src/main/resources/authentication.properties | Microsoft Entra-azonosító és programkonfiguráció. |
src/main/webapp/ | Ez a könyvtár tartalmazza a felhasználói felület – JSP-sablonokat |
CHANGELOG.md | A minta módosításainak listája. |
CONTRIBUTING.md | Útmutató a mintához való hozzájáruláshoz. |
LICEN Standard kiadás | A minta licence. |
Szerepkör-jogcím feldolgozása az azonosító jogkivonatában
A jogkivonat szerepkör-jogcíme tartalmazza azoknak a szerepköröknek a nevét, amelyekhez a bejelentkezett felhasználó hozzá van rendelve, az alábbi példában látható módon:
{
...
"roles": [
"Role1",
"Role2",]
...
}
ConfidentialClientApplication
A rendszer létrehoz egy ConfidentialClientApplication
példányt a AuthHelper.java fájlban, ahogy az az alábbi példában is látható. Ez az objektum segít a Microsoft Entra engedélyezési URL-címének elkészítésében, és segít a hitelesítési jogkivonat cseréjében egy hozzáférési jogkivonatra.
// getConfidentialClientInstance method
IClientSecret secret = ClientCredentialFactory.createFromSecret(SECRET);
confClientInstance = ConfidentialClientApplication
.builder(CLIENT_ID, secret)
.authority(AUTHORITY)
.build();
A rendszer a következő paramétereket használja a példányosításhoz:
- Az alkalmazás ügyfélazonosítója.
- Az ügyfél titkos kódja, amely a bizalmas ügyfélalkalmazások követelménye.
- A Microsoft Entra ID-szolgáltató, amely tartalmazza a Microsoft Entra-bérlő azonosítóját.
Ebben a mintában ezeket az értékeket a rendszer a authentication.properties fájlból olvassa be a Config.java fájl egyik tulajdonságolvasójának használatával.
Útmutató lépésről lépésre
Az alábbi lépések bemutatja az alkalmazás funkcióit:
A bejelentkezési folyamat első lépése egy kérés küldése a végpontra a
/authorize
Microsoft Entra ID-bérlőhöz. Az MSAL4J-példányConfidentialClientApplication
egy engedélyezési kérelem URL-címének létrehozására szolgál. Az alkalmazás átirányítja a böngészőt erre az URL-címre, ahol a felhasználó bejelentkezik.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);
Az alábbi lista a kód funkcióit ismerteti:
AuthorizationRequestUrlParameters
: Az AuthorizationRequestUrl létrehozásához be kell állítani paramétereket.REDIRECT_URI
: Ahol a Microsoft Entra ID átirányítja a böngészőt – a hitelesítési kóddal együtt – a felhasználói hitelesítő adatok gyűjtése után. Meg kell egyeznie az átirányítási URI-val a Microsoft Entra ID alkalmazásregisztrációjában az Azure Portalon.SCOPES
: A hatókörök az alkalmazás által kért engedélyek.- Általában a három hatókör
openid profile offline_access
elegendő az azonosító jogkivonat-válaszának fogadásához. - Az alkalmazás által kért hatókörök teljes listája megtalálható a authentication.properties fájlban. További hatóköröket is hozzáadhat, például a User.Read és így tovább.
- Általában a három hatókör
A microsoft Entra ID egy bejelentkezési kérést jelenít meg a felhasználó számára. Ha a bejelentkezési kísérlet sikeres, a rendszer átirányítja a felhasználó böngészőjét az alkalmazás átirányítási végpontjára. A végpontra irányuló érvényes kérések engedélyezési kódot tartalmaznak.
A
ConfidentialClientApplication
példány ezután kicseréli ezt az engedélyezési kódot egy azonosító jogkivonatra, és hozzáférési jogkivonatot a Microsoft Entra ID-ból.// 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();
Az alábbi lista a kód funkcióit ismerteti:
AuthorizationCodeParameters
: Olyan paraméterek, amelyeket be kell állítani az engedélyezési kód azonosítóra és/vagy hozzáférési jogkivonatra való cseréjéhez.authCode
: Az átirányítási végponton kapott engedélyezési kód.REDIRECT_URI
: Az előző lépésben használt átirányítási URI-t ismét át kell adni.SCOPES
: Az előző lépésben használt hatóköröket ismét át kell adni.
Ha
acquireToken
a jogkivonat sikeres, a rendszer kinyeri a jogkivonat-jogcímeket. Ha a nem megfelelő ellenőrzés sikeres, az eredmények bekerülnek a munkamenetbecontext
– egy példánybaIdentityContextData
– és mentve lesznek. Az alkalmazás ezután példányosíthatja aIdentityContextData
munkamenetből egy példánytIdentityContextAdapterServlet
, amikor hozzá kell férnie, ahogy az a következő kódban is látható:// 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());
Az útvonalak védelme
További információ arról, hogy a mintaalkalmazás hogyan szűri az útvonalakhoz való hozzáférést: AuthenticationFilter.java. A authentication.properties fájlban a app.protect.authenticated
tulajdonság tartalmazza azokat a vesszővel tagolt útvonalakat, amelyekhez csak a hitelesített felhasználók férhetnek hozzá, ahogyan az alábbi példában látható:
# for example, /token_details requires any user to be signed in and does not require special roles claim(s)
app.protect.authenticated=/token_details
A vesszővel elválasztott szabálykészletekben app.protect.roles
felsorolt útvonalak a nem hitelesített hitelesített felhasználókra is vonatkoznak, ahogyan az az alábbi példában is látható. Ezek az útvonalak azonban az alkalmazásszerepkör-tagságok szóközzel elválasztott listáját is tartalmazzák: hitelesítés után csak azok a felhasználók férhetnek hozzá ezekhez az útvonalakhoz, akik rendelkeznek legalább az egyik megfelelő szerepkörrel.
# 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
Hatókörök
A hatókörök közlik a Microsoft Entra-azonosítóval az alkalmazás által kért hozzáférési szintet.
A kért hatókörök alapján a Microsoft Entra ID hozzájárulási párbeszédet jelenít meg a felhasználónak bejelentkezéskor. Ha a felhasználó egy vagy több hatókörhöz járul hozzá, és jogkivonatot szerez be, a hatókörök hozzájárulásával a rendszer az eredményül kapott access_token
kódba kódolja a hatóköröket.
Az alkalmazás által kért hatókörökért lásd : authentication.properties. Ezt a három hatókört az MSAL kéri, és alapértelmezés szerint a Microsoft Entra ID adja meg.
További információ
- Microsoft Authentication Library (MSAL) Java-hoz
- Microsoft Identitásplatform
- Gyorsútmutató: Alkalmazás regisztrálása a Microsoft Identitásplatformon
- A Microsoft Entra ID-alkalmazás hozzájárulási élményének ismertetése
- Felhasználói és rendszergazdai hozzájárulás ismertetése
- MSAL-kódminták
- Útmutató: Alkalmazásszerepkörök hozzáadása az alkalmazáshoz, és azok fogadása a jogkivonatban
- Felhasználói hozzárendelés kezelése egy alkalmazáshoz a Microsoft Entra ID-ban
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: