Megosztás a következőn keresztül:


Java Spring Boot-alkalmazások védelme szerepkörök és szerepkör-jogcímek használatával

Ez a cikk egy Java Spring Boot-webalkalmazást mutat be, amely a Microsoft Entra ID Spring Boot Starter ügyfélkódtárat használja Java-hoz hitelesítéshez, engedélyezéshez és jogkivonat-beszerzéshez. Az alkalmazás az OpenID Connect protokollal jelentkezik be a felhasználókba, és korlátozza a hozzáférést bizonyos útvonalakhoz a Microsoft Entra ID Alkalmazásszerepkörök (alkalmazásszerepkörök) használatával az engedélyezéshez.

Az alkalmazásszerepkörök és a biztonsági csoportok az engedélyezés megvalósításának népszerű eszközei. A szerepköralapú hozzáférés-vezérlés (RBAC) alkalmazásszerepkörökkel és szerepkör-jogcímekkel történő használatával minimális erőfeszítéssel biztonságosan kényszerítheti ki az engedélyezési szabályzatokat. 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.

Egy hasonló forgatókönyvet bemutató videóért lásd : Engedélyezés implementálá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.

Az alábbi ábrán az alkalmazás topológiája látható:

Diagram that shows the topology of the app.Az alkalmazás topológiáját bemutató diagram.

Az alkalmazás a Java Microsoft Entra ID Spring Boot Starter ügyfélkódtárával jelentkezik be egy felhasználóba, és beszerez egy azonosító jogkivonatot a Microsoft Entra ID-ból. Az azonosító jogkivonat tartalmazza a szerepkör-jogcímet. Az alkalmazás ennek a jogcímnek az értékét vizsgálja annak meghatározásához, hogy a felhasználó mely oldalakhoz jogosult hozzáférni.

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 rendszergazdák és a normál felhasználók lapjainak 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.

Az Azure Portalon felhasználókat és csoportokat rendelhet hozzá a szerepkörökhöz.

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égpontba, például https://login.microsoftonline.com/tenantid.

Előfeltételek

Ajánlások

  • Némi jártasság a Spring Frameworkben.
  • A Linux/OSX terminál 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 blogot , hogy up-tonaprakész maradjon a legújabb fejleményekkel.

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-msal-java-samples.git
cd 4-spring-web-app/3-Authorization-II/roles

Másik lehetőségként keresse meg az ms-identity-msal-java-samples 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. Az alábbi szakaszok bemutatják, hogyan regisztrálhatja az alkalmazást az Azure Portalon.

Válassza ki azt a Microsoft Entra ID-bérlőt, ahol létre szeretné hozni az alkalmazásokat

A bérlő kiválasztásához kövesse az alábbi lépéseket:

  1. Jelentkezzen be az Azure Portalra.

  2. Ha a fiókja több Microsoft Entra ID-bérlőben is megtalálható, válassza ki a profilját az Azure Portal sarkában, majd válassza a Címtár váltása lehetőséget a munkamenet kívánt Microsoft Entra ID-bérlőre való módosításához.

Az alkalmazás regisztrálása (java-spring-webapp-roles)

Az alkalmazás regisztrálásához kövesse az alábbi lépéseket:

  1. Lépjen az Azure Portalra , és válassza a Microsoft Entra-azonosítót.

  2. Válassza az Alkalmazásregisztrációk lehetőséget a navigációs panelen, majd válassza az Új regisztráció lehetőséget.

  3. A megjelenő Alkalmazás regisztrálása lapon adja meg a következő alkalmazásregisztrációs adatokat:

    • A Név szakaszban adjon meg egy értelmes alkalmazásnevet, amely megjeleníthető az alkalmazás felhasználói számára – példáuljava-spring-webapp-roles.
    • A Támogatott fióktípusok csoportban válassza a Csak ebben a szervezeti címtárban lévő Fiókok lehetőséget.
    • Az Átirányítási URI (nem kötelező) szakaszban válassza a Web lehetőséget a kombinált listában, és adja meg a következő átirányítási URI-t: http://localhost:8080/login/oauth2/code/.
  4. Válassza a Regisztráció elemet az alkalmazás létrehozásához.

  5. Az alkalmazás regisztrációs oldalán keresse meg és másolja ki az alkalmazás (ügyfél) azonosítójának értékét, amelyet később használni szeretne. Ezt az értéket az alkalmazás konfigurációs fájljában vagy fájljaiban használja.

  6. Az alkalmazás regisztrációs oldalán válassza a Tanúsítványok > titkos kulcsok lehetőséget a navigációs panelen a titkos kulcsok létrehozására és tanúsítványok feltöltésére szolgáló lap megnyitásához.

  7. Az Ügyfél titkos kulcsok szakaszban válassza az Új ügyfélkód lehetőséget.

  8. Írja be a leírást – például az alkalmazás titkos kódját.

  9. Válasszon egyet a rendelkezésre álló időtartamok közül: 1 év, 2 év alatt vagy Soha nem jár le.

  10. Válassza a Hozzáadás lehetőséget. Megjelenik a létrehozott érték.

  11. Másolja és mentse a létrehozott értéket a későbbi lépésekben való használatra. Szüksége van erre az értékre a kód konfigurációs fájljaihoz. Ez az érték nem jelenik meg újra, és más módon nem kérhető le. Ezért mindenképpen mentse az Azure Portalról, mielőtt bármilyen más képernyőre vagy panelre navigálna.

Az alkalmazásszerepkörök meghatározása

Az alkalmazásszerepkörök meghatározásához kövesse az alábbi lépéseket:

  1. Továbbra is ugyanazon az alkalmazásregisztráción válassza az Alkalmazásszerepkörök lehetőséget a navigációs panelen.

  2. Válassza az Alkalmazásszerepkör létrehozása lehetőséget, majd adja meg a következő értékeket:

    • A Megjelenítendő név mezőben adjon meg egy megfelelő nevet – például PrivilegedAdmin.
    • Engedélyezett tagtípusok esetén válassza a Felhasználó lehetőséget.
    • Az Érték mezőben adja meg a PrivilegedAdmin értéket.
    • Leírásként adja meg a Rendszergazda lapot megtekintő PrivilegedAdmins nevet.
  3. Válassza az Alkalmazásszerepkör létrehozása lehetőséget, majd adja meg a következő értékeket:

    • A Megjelenítendő név mezőben adjon meg egy megfelelő nevet – például RegularUser.
    • Engedélyezett tagtípusok esetén válassza a Felhasználó lehetőséget.
    • Az Érték mezőben adja meg a RegularUser értéket.
    • Leírásként adja meg a felhasználói oldalt megtekintő RegularUsers nevet.
  4. A módosítások mentéséhez válassza az Alkalmaz lehetőséget.

Felhasználók hozzárendelése alkalmazásszerepkörökhöz

Ha felhasználókat szeretne hozzáadni a korábban definiált alkalmazásszerepkörhöz, kövesse az alábbi irányelveket: Felhasználók és csoportok hozzárendelése szerepkörökhöz.


Az alkalmazás (java-spring-webapp-roles) konfigurálása az alkalmazásregisztráció használatára

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.

  1. Nyissa meg a projektet az IDE-ben.

  2. Nyissa meg az src\main\resources\application.yml fájlt.

  3. Keresse meg a helyőrzőt Enter_Your_Tenant_ID_Here , és cserélje le a meglévő értéket a Microsoft Entra-bérlőazonosítóra.

  4. Keresse meg a helyőrzőt Enter_Your_Client_ID_Here , és cserélje le a meglévő értéket az alkalmazásazonosítóra vagy clientId az java-spring-webapp-roles Azure Portalról másolt alkalmazásra.

  5. Keresse meg a helyőrzőt Enter_Your_Client_Secret_Here , és cserélje le a meglévő értéket az Azure Portalról másolt példány létrehozása java-spring-webapp-roles során mentett értékre.

  6. Nyissa meg az src/main/java/com/microsoft/azuresamples/msal4j/msidentityspringbootapplication/Sample.Controller.java fájlt.

  7. Keresse meg a fájlban szereplő és RegularUser az PrivilegedAdmin alkalmazásszerepkörökre mutató hivatkozásokat. Szükség esetén módosítsa őket, hogy tükrözzék az előző lépésekben kiválasztott alkalmazásszerepkör-neveket.

Minta futtatása

Az alábbi szakaszok bemutatják, hogyan helyezheti üzembe a mintát az Azure Container Appsben.

Előfeltételek

A Spring projekt előkészítése

A projekt előkészítéséhez kövesse az alábbi lépéseket:

  1. A projekt létrehozásához használja a következő Maven-parancsot :

    mvn clean verify
    
  2. Futtassa helyileg a mintaprojektet az alábbi paranccsal:

    mvn spring-boot:run
    

Beállítás

Ha a parancssori felületről szeretne bejelentkezni az Azure-ba, futtassa a következő parancsot, és kövesse az utasításokat a hitelesítési folyamat befejezéséhez.

az login

A parancssori felület legújabb verziójának futtatásához futtassa a frissítési parancsot.

az upgrade

Ezután telepítse vagy frissítse az Azure Container Apps bővítményt a parancssori felülethez.

Ha hibaüzenetet kap a hiányzó paraméterekről, amikor parancsokat futtat az containerapp az Azure CLI-ben, győződjön meg arról, hogy telepítve van az Azure Container Apps bővítmény legújabb verziója.

az extension add --name containerapp --upgrade

Feljegyzés

2024 májusától kezdődően az Azure CLI-bővítmények alapértelmezés szerint nem engedélyezik az előzetes verziójú funkciókat. A Container Apps előzetes verziójú funkcióinak eléréséhez telepítse a Container Apps bővítményt a következővel --allow-preview true: .

az extension add --name containerapp --upgrade --allow-preview true

Az aktuális bővítmény vagy modul telepítése után regisztrálja a névtereket és Microsoft.OperationalInsights a Microsoft.App névtereket.

Feljegyzés

Az Azure Container Apps-erőforrások át lettek migrálva a Microsoft.Web névtérből a Microsoft.App névtérbe. További részletekért tekintse meg a Névtér 2022 . márciusi migrálását a Microsoft.Web-ből a Microsoft.App.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Az Azure Container Apps-környezet létrehozása

Most, hogy az Azure CLI beállítása befejeződött, meghatározhatja a jelen cikkben használt környezeti változókat.

Adja meg a következő változókat a bash-rendszerhéjban.

export RESOURCE_GROUP="ms-identity-containerapps"
export LOCATION="canadacentral"
export ENVIRONMENT="env-ms-identity-containerapps"
export API_NAME="ms-identity-api"
export JAR_FILE_PATH_AND_NAME="./target/ms-identity-spring-boot-webapp-0.0.1-SNAPSHOT.jar"

Hozzon létre egy erőforráscsoportot.

az group create  \
    --name $RESOURCE_GROUP \
    --location $LOCATION \

Hozzon létre egy környezetet egy automatikusan létrehozott Log Analytics-munkaterülettel.

az containerapp env create \
    --name $ENVIRONMENT \
    --resource-group $RESOURCE_GROUP \
    --location $LOCATION

A tárolóalkalmazás-környezet alapértelmezett tartományának megjelenítése. Jegyezze fel ezt a tartományt a későbbi szakaszokban való használathoz.

az containerapp env show \
    --name $ENVIRONMENT \
    --resource-group $RESOURCE_GROUP \
    --query properties.defaultDomain

Az alkalmazás előkészítése az üzembe helyezéshez

Amikor üzembe helyezi az alkalmazást az Azure Container Appsben, az átirányítási URL-cím megváltozik az Azure Container Appsben üzembe helyezett alkalmazáspéldány átirányítási URL-címére. A következő lépésekkel módosíthatja ezeket a beállításokat a application.yml fájlban:

  1. Lépjen az alkalmazás src\main\resources\application.yml fájljára, és módosítsa a telepített alkalmazás tartománynevére az post-logout-redirect-uri alábbi példában látható módon. Mindenképpen cserélje le <API_NAME> a <default-domain-of-container-app-environment> tényleges értékeket. Ha például az előző lépésben az Azure Container App-környezet alapértelmezett tartománya és ms-identity-api az alkalmazás neve szerepel, akkor az értékhez kell használnia post-logout-redirect-urihttps://ms-identity-api.<default-domain>.

    post-logout-redirect-uri: https://<API_NAME>.<default-domain-of-container-app-environment>
    
  2. 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

Az alkalmazás application.yml fájlja jelenleg az ügyfél titkos kódjának értékét tartalmazza a client-secret paraméterben. Ez az érték nem ajánlott ebben a fájlban tartani. Kockázatot is vállalhat, ha a fájlt egy Git-adattárba véglegesíti. Az ajánlott megközelítésért lásd : Titkos kódok kezelése az Azure Container Appsben.

A Microsoft Entra ID alkalmazásregisztráció frissítése

Mivel az átirányítási URI megváltozik az Azure Container Appsben üzembe helyezett alkalmazásra, az átirányítási URI-t is módosítania kell a Microsoft Entra ID-alkalmazásregisztrációjában. A módosítás végrehajtásához kövesse az alábbi lépéseket:

  1. Lépjen a Microsoft Identitásplatform fejlesztőknek Alkalmazásregisztrációk lapra.

  2. A keresőmező használatával keresse meg az alkalmazásregisztrációt – például java-servlet-webapp-authentication.

  3. Nyissa meg az alkalmazásregisztrációt a nevének kiválasztásával.

  4. Válassza a Hitelesítés lehetőséget a menüben.

  5. A Webes - átirányítási URI-k szakaszban válassza az URI hozzáadása lehetőséget.

  6. Töltse ki az alkalmazás URI-ját, hozzáfűzve /login/oauth2/code/ például https://<containerapp-name>.<default domain of container app environment>/login/oauth2/code/.

  7. Válassza a Mentés lehetőséget.

Az alkalmazás üzembe helyezése

A JAR-csomag üzembe helyezése az Azure Container Appsben.

Feljegyzés

Szükség esetén megadhatja a JDK-verziót a Java buildkörnyezet változóiban. További információ: A Java környezeti változóinak összeállítása az Azure Container Appsben.

Most már üzembe helyezheti a WAR-fájlt a az containerapp up CLI paranccsal.

az containerapp up \
    --name $API_NAME \
    --resource-group $RESOURCE_GROUP \
    --location $LOCATION \
    --environment $ENVIRONMENT \
    --artifact <JAR_FILE_PATH_AND_NAME> \
    --ingress external \
    --target-port 8080 \
    --query properties.configuration.ingress.fqdn

Feljegyzés

Az alapértelmezett JDK-verzió 17. Ha módosítania kell a JDK-verziót az alkalmazással való kompatibilitás érdekében, az --build-env-vars BP_JVM_VERSION=<YOUR_JDK_VERSION> argumentummal módosíthatja a verziószámot.

További buildkörnyezeti változókért tekintse meg a Java környezeti változóinak összeállítása az Azure Container Appsben című témakört.

Az alkalmazás ellenőrzése

Ebben a példában a containerapp up parancs tartalmazza az --query properties.configuration.ingress.fqdn argumentumot, amely visszaadja a teljes tartománynevet (FQDN), más néven az alkalmazás URL-címét. Az alábbi lépésekkel ellenőrizheti az alkalmazás naplóit az üzembehelyezési problémák kivizsgálásához:

  1. A kimeneti alkalmazás URL-címét az Üzembe helyezés szakasz Kimenetek lapján érheti el.

  2. Az Azure Container Apps-példány áttekintési lapján válassza a Naplók lehetőséget az alkalmazás naplóinak ellenőrzéséhez.

A minta vizsgálata

A minta megismeréséhez kövesse az alábbi lépéseket:

  1. Figyelje meg a bejelentkezett vagy kijelentkezett állapotot a képernyő közepén.
  2. Válassza a sarokban található környezetérzékeny gombot. Ez a gomb beolvassa a bejelentkezést az alkalmazás első futtatásakor. Másik lehetőségként válassza ki a jogkivonat részleteit, csak a rendszergazdákat vagy a normál felhasználókat. Mivel ezek a lapok védettek, és hitelesítést igényelnek, a rendszer automatikusan átirányítja a bejelentkezési lapra.
  3. A következő lapon kövesse az utasításokat, és jelentkezzen be egy fiókkal a Microsoft Entra ID-bérlőben.
  4. A hozzájárulási képernyőn figyelje meg a kért hatóköröket.
  5. A bejelentkezési folyamat sikeres befejezése után a rendszer átirányítja a kezdőlapra - amely a bejelentkezési állapotot mutatja - vagy a többi lap egyikére, attól függően, hogy melyik gomb aktiválta a bejelentkezési folyamatot.
  6. Figyelje meg, hogy a környezetfüggő gomb most kijelentkezik , és megjeleníti a felhasználónevét.
  7. Ha a kezdőlapon van, válassza az Azonosító jogkivonat részletei lehetőséget az azonosító jogkivonat egyes dekódolt jogcímeinek megtekintéséhez, beleértve a szerepköröket is.
  8. Válassza a Csak rendszergazdák lehetőséget a /admin_onlymegtekintéshez. Ezt a lapot csak az alkalmazásszerepkörrel PrivilegedAdmin rendelkező felhasználók tekinthetik meg. Ellenkező esetben egy engedélyezési hibaüzenet jelenik meg.
  9. Válassza a Normál felhasználók lehetőséget a /regular_user lap megtekintéséhez. Csak az alkalmazásszerepkörrel RegularUser rendelkező felhasználók PrivilegedAdmin tekinthetik meg ezt a lapot. Ellenkező esetben egy engedélyezési hibaüzenet jelenik meg.
  10. A kijelentkezéshez használja a sarokban lévő gombot. Az állapotlap az új állapotot tükrözi.

Tudnivalók a kódról

Ez a minta bemutatja, hogyan használhatja a Java-hoz készült Microsoft Entra ID Spring Boot Starter ügyféloldali kódtárat a felhasználók Microsoft Entra ID-bérlőbe való bejelentkezéséhez. A minta a Spring Oauth2-ügyfél- és Spring Web-rendszerindítókat is használja. A minta a Microsoft Entra-azonosítóból beszerzett azonosító jogkivonatból származó jogcímeket használja a bejelentkezett felhasználó adatainak megjelenítéséhez, valamint egyes lapokhoz való hozzáférés korlátozásához a szerepkör-jogcím használatával engedélyezésre.

Tartalom

Az alábbi táblázat a mintaprojekt mappájának tartalmát mutatja be:

Fájl/mappa Leírás
pom.xml Alkalmazásfüggőségek.
src/main/resources/templates/ Thymeleaf sablonok felhasználói felülethez.
src/main/resources/application.yml Az alkalmazás és a Microsoft Entra ID rendszerindítási kezdőkönyvtárának konfigurációja.
src/main/java/com/microsoft/azuresamples/msal4j/msidentityspringbootwebapp/ Ez a könyvtár tartalmazza a fő alkalmazásbeléptetési pontot, vezérlőt és konfigurációs osztályokat.
.../MsIdentitySpringBootWebappApplication.java Főosztály.
.../SampleController.java Vezérlő végpontleképezésekkel.
.../SecurityConfig.java Biztonsági konfiguráció – például, hogy mely útvonalak igényelnek hitelesítést.
.../Utilities.java Segédprogramosztály – például szűrőazonosító-jogkivonat jogcímek.
CHANGELOG.md A minta módosításainak listája.
CONTRIBUTING.md Útmutató a mintához való hozzájáruláshoz.
LICENC" A minta licence.

Azonosító jogkivonat jogcíme

A jogkivonat részleteinek kinyeréséhez az alkalmazás a Spring Security AuthenticationPrincipal és OidcUser az objektum használatát használja egy kérésleképezésben, ahogyan az az alábbi példában is látható. Az alkalmazás azonosítójogkivonat-jogcímek használatának részletes részleteiért tekintse meg a mintavezérlőt.

import org.springframework.security.oauth2.core.oidc.user.OidcUser;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
//...
@GetMapping(path = "/some_path")
public String tokenDetails(@AuthenticationPrincipal OidcUser principal) {
    Map<String, Object> claims = principal.getIdToken().getClaims();
}

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": [
    "PrivilegedAdmin",
    "RegularUser",]
  ...
}

A szerepkörnevek elérésének gyakori módja az azonosítójogkivonat jogcímek szakaszában van dokumentálva.

A Microsoft Entra ID Boot Starter 3.3-s vagy újabb verziója szintén automatikusan elemzi a szerepkör-jogcímet, és hozzáadja az egyes szerepköröket a bejelentkezett felhasználóhoz Authorities, és mindegyik előtagot a sztringgel APPROLE_együtt tartalmazza. Ez a konfiguráció lehetővé teszi a fejlesztők számára, hogy spring PrePost feltételjegyzetekkel használják az alkalmazásszerepköröket a hasAuthority metódus használatával. A SampleController.java például a következő @PreAuthorize feltételeket találja:

@GetMapping(path = "/admin_only")
@PreAuthorize("hasAuthority('APPROLE_PrivilegedAdmin')")
public String adminOnly(Model model) {
    // restrict to users who have PrivilegedAdmin app role only
}
@GetMapping(path = "/regular_user")
@PreAuthorize("hasAnyAuthority('APPROLE_PrivilegedAdmin','APPROLE_RegularUser')")
public String regularUser(Model model) {
    // restrict to users who have any of RegularUser or PrivilegedAdmin app roles
}

Az alábbi kód lekéri egy adott felhasználó hatóságainak teljes listáját:

@GetMapping(path = "/some_path")
public String tokenDetails(@AuthenticationPrincipal OidcUser principal) {
   Collection<? extends GrantedAuthority> authorities = principal.getAuthorities();
}

Bejelentkezés esetén az alkalmazás kérést küld a Microsoft Entra ID bejelentkezési végpontra, amelyet a Java-hoz készült Microsoft Entra ID Spring Boot Starter ügyfélkódtár automatikusan konfigurál, ahogyan az alábbi példában látható:

<a class="btn btn-success" href="/oauth2/authorization/azure">Sign In</a>

Kijelentkezés esetén az alkalmazás POST kérést küld a logout végpontra, ahogyan az a következő példában is látható:

<form action="#" th:action="@{/logout}" method="post">
  <input class="btn btn-warning" type="submit" value="Sign Out" />
</form>

Hitelesítéstől függő felhasználói felületi elemek

Az alkalmazás néhány egyszerű logikával rendelkezik a felhasználói felület sablonlapjain a megjelenítendő tartalom meghatározásához annak alapján, hogy a felhasználó hitelesítése megtörtént-e, ahogy az alábbi példában is látható, a Spring Security Thymeleaf-címkékkel:

<div sec:authorize="isAuthenticated()">
  this content only shows to authenticated users
</div>
<div sec:authorize="isAnonymous()">
  this content only shows to not-authenticated users
</div>

Útvonalak védelme az AADWebSecurityConfigurerAdapterrel

Alapértelmezés szerint az alkalmazás védi az azonosító jogkivonatának részleteit, a Rendszergazdák és a Normál felhasználók lapot, hogy csak a bejelentkezett felhasználók férhessenek hozzá. Az alkalmazás ezeket az útvonalakat a app.protect.authenticated tulajdonságból konfigurálja a application.yml fájlból. Az alkalmazás konkrét követelményeinek konfigurálásához kiterjesztheti AADWebSecurityConfigurationAdapter az egyik osztályát. Például tekintse meg az alkalmazás SecurityConfig osztályát, amely az alábbi kódban látható:

@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends AADWebSecurityConfigurerAdapter{
  @Value( "${app.protect.authenticated}" )
  private String[] protectedRoutes;

    @Override
    public void configure(HttpSecurity http) throws Exception {
    // use required configuration form AADWebSecurityAdapter.configure:
    super.configure(http);
    // add custom configuration:
    http.authorizeRequests()
      .antMatchers(protectedRoutes).authenticated()     // limit these pages to authenticated users (default: /token_details, /admin_only, /regular_user)
      .antMatchers("/**").permitAll();                  // allow all other routes.
    }
}

További információ

További információ az OAuth 2.0 protokollok működéséről ebben a forgatókönyvben és más forgatókönyvekben: Hitelesítési forgatókönyvek a Microsoft Entra ID-hoz.