Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 a Microsoft Entra ID biztonsági csoporttagság alapján korlátozza a lapokhoz való hozzáférést.
Az alábbi ábrán az alkalmazás topológiája látható:
Az alkalmazás topológiáját bemutató diagram.
Az ügyfélalkalmazás a Java-hoz készült Microsoft Entra ID Spring Boot Starter ügyfélkódtárral jelentkezik be a felhasználókba egy Microsoft Entra ID-bérlőben, és beszerez egy azonosító jogkivonatot a Microsoft Entra ID-ból.
Az azonosító jogkivonat tartalmazza a csoportok jogcímét. Az alkalmazás betölti a jogcímeket a spring GrantedAuthorities listába a bejelentkezett felhasználó számára. Ezek az értékek határozzák meg, hogy a felhasználó mely oldalakhoz férhet hozzá.
A forgatókönyvet bemutató videóért tekintse meg az alkalmazások engedélyezésének implementálását alkalmazásszerepkörök, biztonsági csoportok, hatókörök és címtárszerepkörök használatával.
Előfeltételek
- JDK 15-ös verzió. Ez a minta java 15-ös rendszeren lett kifejlesztve, de más verziókkal kompatibilis lehet.
- Maven 3
- Java Extension Pack for Visual Studio Code a minta Visual Studio Code-ban való futtatásához ajánlott.
- Egy Microsoft Entra ID-bérlő. További információ: Rövid útmutató: Bérlő beállítása.
- Egy felhasználói fiók a Microsoft Entra ID-bérlőben. Ez a minta nem működik személyes Microsoft-fiókkal. Ezért ha személyes fiókkal jelentkezett be az Azure Portalra , és nem rendelkezik felhasználói fiókkal a címtárban, most létre kell hoznia egyet.
- Két, névvel ellátott
AdminGroupUserGroupbiztonsági csoport, amely tartalmazza a mintát aláírni és tesztelni kívánt felhasználót vagy felhasználókat. Másik lehetőségként hozzáadhatja a felhasználót két meglévő biztonsági csoporthoz a bérlőben. Ha meglévő csoportokat használ, mindenképpen módosítsa a mintakonfigurációt a meglévő biztonsági csoportok nevének és objektumazonosítójának használatára. - Visual Studio Code
- Azure Tools for Visual Studio Code
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/groups
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:
Jelentkezzen be az Azure Portalra.
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-groups)
Az alkalmazás regisztrálásához kövesse az alábbi lépéseket:
Lépjen az Azure Portalra , és válassza a Microsoft Entra-azonosítót.
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.
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ául
java-spring-webapp-groups. - 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/.
- A Név szakaszban adjon meg egy értelmes alkalmazásnevet, amely megjeleníthető az alkalmazás felhasználói számára – például
Válassza a Regisztráció elemet az alkalmazás létrehozásához.
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.
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.
Az Ügyfél titkos kulcsok szakaszban válassza az Új ügyfélkód lehetőséget.
Írja be a leírást – például az alkalmazás titkos kódját.
Válasszon egyet a rendelkezésre álló időtartamok közül: 6 hónap, 12 hónap vagy Egyéni.
Válassza a Hozzáadás lehetőséget. Megjelenik a létrehozott érték.
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ás regisztrációs oldalán válassza az API-engedélyeket a navigációs panelen annak a lapnak a megnyitásához, ahol hozzáférést adhat az alkalmazáshoz szükséges API-khoz.
Válassza az Engedély hozzáadása lehetőséget.
Győződjön meg arról, hogy a Microsoft API-k lap ki van jelölve.
A Gyakran használt Microsoft API-k szakaszban válassza a Microsoft Graph lehetőséget.
A Delegált engedélyek szakaszban válassza a GroupMember.Read.All elemet a listából. Szükség esetén használja a keresőmezőt. Ez az engedély szükséges a csoporttagság graphon keresztüli lekéréséhez, ha a túlhasználati forgatókönyv bekövetkezik.
Válassza ki a gombot a rendszergazdai hozzájárulás megadásához
GroupMember.Read.All.Jelölje be az Engedélyek hozzáadása lehetőséget.
Biztonsági csoportok létrehozása
Biztonsági csoportok létrehozásához kövesse az alábbi lépéseket:
Lépjen az Azure Portalra , és válassza a Microsoft Entra-azonosítót.
Válassza a Csoportok lehetőséget a navigációs panelen.
A Csoportok panelen válassza az Új csoport lehetőséget, majd adja meg a következő információkat:
- Csoporttípus esetén válassza a Biztonság lehetőséget.
- A Csoportnév mezőbe írja be az AdminGroup nevet.
- A csoport leírásához adja meg a Felügyeleti biztonsági csoportot.
- Adja hozzá az ebben a mintában használni és tesztelni kívánt csoporttulajdonosokat és csoporttagokat .
- Válassza a Létrehozás lehetőséget.
A Csoportok panelen válassza az Új csoport lehetőséget, majd adja meg a következő információkat:
- Csoporttípus esetén válassza a Biztonság lehetőséget.
- A Csoportnév mezőbe írja be a UserGroup nevet.
- A csoport leírásához adja meg a felhasználói biztonsági csoportot.
- Adja hozzá az ebben a mintában használni és tesztelni kívánt csoporttulajdonosokat és csoporttagokat .
- Válassza a Létrehozás lehetőséget.
További információ: Microsoft Entra-csoportok és csoporttagság kezelése.
Biztonsági beállítások konfigurálása
Az alábbi lehetőségek közül választhat, hogyan konfigurálhatja tovább az alkalmazást a csoportok igénylésének fogadásához:
Fogadja az összes csoportot, amelyhez a bejelentkezett felhasználó hozzá van rendelve egy Microsoft Entra ID-bérlőben, beágyazott csoportokat tartalmazva. További információ: Az alkalmazás konfigurálása az összes olyan csoport fogadásához, amelyhez a bejelentkezett felhasználó hozzá van rendelve, beleértve a beágyazott csoportokat is.
A csoportok jogcímértékeinek fogadása szűrt csoportokból, amelyekkel az alkalmazás be van programozva, hogy működjön. További információ: Az alkalmazás konfigurálása a csoportok jogcímértékeinek fogadásához olyan szűrt csoportokból, amelyhez a felhasználó hozzárendelhető. Ez a lehetőség nem érhető el a Microsoft Entra ID Free kiadásában.
Feljegyzés
A helyszíni csoport samAccountName vagy On Premises Group Security Identifier a csoportazonosító helyett az Active Directoryból szinkronizált csoportattribútumok használatának előfeltételei című szakaszt olvassa el a Microsoft Entra ID használatával az alkalmazásokhoz tartozó csoportjogcímek konfigurálása című szakaszban.
Konfigurálja az alkalmazást úgy, hogy megkapja a bejelentkezett felhasználóhoz rendelt összes csoportot, beleértve a beágyazott csoportokat is
Az alkalmazás konfigurálásához kövesse az alábbi lépéseket:
Az alkalmazás regisztrációs oldalán válassza a navigációs panel Token Configuration elemét a lap megnyitásához, ahol konfigurálhatja az alkalmazáshoz kibocsátott jogcímek által biztosított jogkivonatokat.
Válassza a Csoportok hozzáadása jogcím lehetőséget a Csoportok szerkesztése jogcím képernyő megnyitásához.
Válassza ki a biztonsági csoportokat vagy az összes csoportot (beleértve a terjesztési listákat, de az alkalmazáshoz rendelt csoportokat nem). Ha mindkettőt választja, az nem befolyásolja a Biztonsági csoportok beállítást.
Az Azonosító szakaszban válassza a Csoportazonosító lehetőséget. Ez a kijelölés azt eredményezi, hogy a Microsoft Entra ID elküldi azon csoportok objektumazonosítóját , amelyekhez a felhasználó a felhasználó bejelentkezése után megkapja az alkalmazás által kapott azonosító jogkivonat csoportjogkivonatát .
Az alkalmazás konfigurálása a csoportok jogcímértékeinek fogadásához olyan szűrt csoportokból, amelyhez a felhasználó hozzárendelhető
Ez a beállítás akkor hasznos, ha a következő esetek teljesülnek:
- Az alkalmazás olyan csoportokra van kíváncsi, amelyekhez egy bejelentkező felhasználó hozzárendelhető.
- Az alkalmazás nem érdekli minden olyan biztonsági csoport, amelyhez a felhasználó hozzá van rendelve a bérlőben.
Ez a beállítás segít az alkalmazásnak elkerülni a túlhasználati problémát.
Feljegyzés
Ez a funkció nem érhető el a Microsoft Entra ID Free kiadásában.
A beágyazott csoporthozzárendelések nem érhetők el, ha ezt a beállítást használja.
Ha engedélyezni szeretné ezt a beállítást az alkalmazásban, kövesse az alábbi lépéseket:
Az alkalmazás regisztrációs oldalán válassza a navigációs panel Token Configuration elemét a lap megnyitásához, ahol konfigurálhatja az alkalmazáshoz kibocsátott jogcímek által biztosított jogkivonatokat.
Válassza a Csoportok hozzáadása jogcím lehetőséget a Csoportok szerkesztése jogcím képernyő megnyitásához.
Válassza ki az alkalmazáshoz rendelt csoportokat, és ne válasszon más beállításokat. Ha további lehetőségeket választ, például biztonsági csoportokat vagy minden csoportot (beleértve a terjesztési listákat, de az alkalmazáshoz rendelt csoportokat nem), ezek a beállítások nem befolyásolják az alkalmazáshoz rendelt csoportok hatását.
Az Azonosító szakaszban válassza a Csoportazonosító lehetőséget. Ez a kijelölés azt eredményezi, hogy a Microsoft Entra ID elküldi azon csoportok objektumazonosítóját , amelyekhez a felhasználó a felhasználó bejelentkezése után megkapja az alkalmazás által kapott azonosító jogkivonat csoportjogkivonatát .
Ha webes API-t tesz közzé az Api-t elérhetővé tetsző beállítással, akkor az Access szakaszban a Csoportazonosító lehetőséget is választhatja. Ez a kijelölés miatt a Microsoft Entra ID elküldi azon csoportok objektumazonosítóját, amelyekhez a felhasználó hozzá van rendelve az API ügyfélalkalmazásai számára kiadott hozzáférési jogkivonat csoportok jogcímén.
Az alkalmazás regisztrációs oldalán válassza az Áttekintés lehetőséget a navigációs panelen az Alkalmazás áttekintése képernyő megnyitásához.
Válassza ki az alkalmazás nevét tartalmazó hivatkozást a helyi címtár felügyelt alkalmazásban. Ez a mezőcím csonkolt lehet – például felügyelt alkalmazás a...-ban. Ha ezt a hivatkozást választja, keresse meg az alkalmazáshoz tartozó szolgáltatásnévvel társított Vállalati alkalmazás áttekintése lapot abban a bérlőben, ahol létrehozta. Az alkalmazásregisztrációs lapra a böngésző vissza gombjával léphet vissza.
A navigációs panelEn a Felhasználók és csoportok lehetőséget választva megnyithatja azt a lapot, amelyen felhasználókat és csoportokat rendelhet az alkalmazáshoz.
Válassza a Felhasználó hozzáadása lehetőséget.
Válassza ki a felhasználót és a csoportokat az eredményül kapott képernyőn.
Válassza ki az alkalmazáshoz hozzárendelni kívánt csoportokat.
Válassza a Kijelölés lehetőséget a csoportok kijelölésének befejezéséhez.
Válassza a Hozzárendelés lehetőséget a csoport-hozzárendelési folyamat befejezéséhez.
Az alkalmazás mostantól megkapja ezeket a csoportokat a csoportok jogcímén, amikor egy felhasználó bejelentkezik az alkalmazásba, egy vagy több hozzárendelt csoport tagja.
A navigációs panel Tulajdonságok elemét választva megnyithatja az alkalmazás alapvető tulajdonságait listázó lapot. Állítsa a szükséges felhasználói hozzárendelést? jelzőt Igen értékre.
Fontos
Amikor kötelezővé teszi a felhasználói hozzárendelést? Igen értékre állítja, a Microsoft Entra-azonosító ellenőrzi, hogy csak a Felhasználók és csoportok panelen az alkalmazáshoz rendelt felhasználók tudnak-e bejelentkezni az alkalmazásba. A felhasználókat közvetlenül vagy a hozzájuk tartozó biztonsági csoportok hozzárendelésével rendelheti hozzá.
A kódminta konfigurálása az alkalmazásregisztrációs és biztonsági csoportok (java-spring-webapp-groups) 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.
Nyissa meg a projektet az IDE-ben.
Nyissa meg az src\main\resources\application.yml fájlt.
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.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 vagyclientIdazjava-spring-webapp-groupsAzure Portalról másolt alkalmazásra.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ásajava-spring-webapp-groupssorán mentett értékre.Keresse meg a helyőrzőt
Enter_Your_Admin_Group_ID_Here, és cserélje le a meglévő értéket aobjectIdFelügyeleti csoport értékére.Keresse meg a helyőrzőt
Enter_Your_User_Group_ID_Here, és cserélje le a meglévő értéket aobjectIdUserGroup értékére.Nyissa meg az src/main/java/com/microsoft/azuresamples/msal4j/msidentityspringbootwebapp/SampleController.java fájlt.
Keresse meg a helyőrzőt
Enter_Your_Admin_Group_ID_Here, és cserélje le a meglévő értéket aobjectIdFelügyeleti csoport értékére.Keresse meg a helyőrzőt
Enter_Your_User_Group_ID_Here, és cserélje le a meglévő értéket aobjectIdUserGroup értékére.
Minta futtatása
Az alábbi szakaszok bemutatják, hogyan helyezheti üzembe a mintát az Azure Container Appsben.
Előfeltételek
- Egy Azure-fiók. Ha még nincs előfizetése, hozzon létre egy ingyenes fiókot. A folytatáshoz szüksége van az Azure-előfizetés
ContributorvagyOwnerengedélyére. További információ: Azure-szerepkörök hozzárendelése a Azure Portal. - Az Azure CLI.
- Az Azure Container Apps CLI-bővítmény, verzió
0.3.47vagy újabb. A legújabb verzió telepítéséhez használja aaz extension add --name containerapp --upgrade --allow-previewparancsot. - A Java Development Kit 17-es vagy újabb verziója.
- Maven.
A Spring projekt előkészítése
A projekt előkészítéséhez kövesse az alábbi lépéseket:
A projekt létrehozásához használja a következő Maven-parancsot :
mvn clean verifyFuttassa 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:
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-urialá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 ésms-identity-apiaz alkalmazás neve szerepel, akkor az értékhez kell használniapost-logout-redirect-urihttps://ms-identity-api.<default-domain>.post-logout-redirect-uri: https://<API_NAME>.<default-domain-of-container-app-environment>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:
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
/login/oauth2/code/példáulhttps://<containerapp-name>.<default domain of container app environment>/login/oauth2/code/.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:
A kimeneti alkalmazás URL-címét az Üzembe helyezés szakasz Kimenetek lapján érheti el.
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:
- 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. 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.
- 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.
- 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.
- Figyelje meg, hogy a környezetfüggő gomb most kijelentkezik , és megjeleníti a felhasználónevét.
- 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 csoportokat is.
- Válassza a Csak rendszergazdák lehetőséget a
/admin_onlymegtekintéshez. Ezt a lapot csak aAdminGroupbiztonsági csoporthoz tartozó 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_userlap megtekintéséhez. Ezt a lapot csak aAdminGroupbiztonsági csoporthoz tartozó felhasználók tekinthetik meg. Ellenkező esetben egy engedélyezési hibaüzenet jelenik meg. - 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 csoportok engedélykérelménnyel.
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();
}
Csoportok jogcímének feldolgozása az azonosító jogkivonatában
A jogkivonat csoportkövetkeztetése tartalmazza azoknak a csoportoknak a nevét, amelyekhez a bejelentkezett felhasználó hozzá van rendelve, az alábbi példában látható módon:
{
...
"groups": [
"xyz-id-xyz",
"xyz-id-xyz",]
...
}
A csoportnevek elérésének gyakori módja az azonosítójogkivonat jogcímek szakaszában található.
A Microsoft Entra ID Boot Starter 3.5-ös és újabb verziója automatikusan elemzi a csoportok jogcímét Authorities, és hozzáadja az egyes csoportokat a bejelentkezett felhasználóhoz. Ez a konfiguráció lehetővé teszi a fejlesztők számára, hogy spring PrePost condition széljegyzetekkel rendelkező csoportokat használjanak a hasAuthority módszerrel. A SampleController.java például a következő @PreAuthorize feltételeket találja:
@GetMapping(path = "/admin_only")
@PreAuthorize("hasAuthority('enter-admin-group-id-here')")
public String adminOnly(Model model) {
// restrict to users who belong to AdminGroup
}
@GetMapping(path = "/regular_user")
@PreAuthorize("hasAnyAuthority('enter-user-group-id-here','enter-admin-group-id-here')")
public String regularUser(Model model) {
// restrict to users who belong to any of UserGroup or AdminGroup
}
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ési és bejelentkezési hivatkozások
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 application.yml fájl tulajdonságával konfigurálja. 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.
}
}
A csoportok túlhasználati jogcíme
Annak érdekében, hogy a jogkivonat mérete ne haladja meg a HTTP-fejléc méretkorlátjait, a Microsoft Identitásplatform korlátozza a csoportok jogcímében szereplő objektumazonosítók számát.
A túllépési korlát SAML-jogkivonatok esetén 150, JWT-jogkivonatok esetén 200, egyoldalas alkalmazások esetén 6. Ha egy felhasználó a túlhasználati korlátnál több csoport tagja, akkor a Microsoft Identitásplatform nem bocsátja ki a csoportazonosítókat a jogkivonatban szereplő csoportok jogcímében. Ehelyett tartalmaz egy túlhasználati jogcímet a jogkivonatban, amely azt jelzi az alkalmazásnak, hogy lekérdezi a Microsoft Graph API-t a felhasználó csoporttagságának lekéréséhez.
A Microsoft Entra ID Boot Starter 3.5-ös és újabb verziója automatikusan elemzi a csoportok jogcímét Authorities, és hozzáadja az egyes csoportokat a bejelentkezett felhasználóhoz. A kezdő automatikusan kezeli a csoportok túlhasználati forgatókönyvét.
Feljegyzés
Javasoljuk, hogy ha lehetséges, használja a csoportszűrési funkciót, hogy elkerülje a túlhasználatot. További információ: Az alkalmazás konfigurálása a csoportok jogcímértékeinek fogadásához olyan szűrt csoportokból, amelyhez a felhasználó hozzárendelhető.
A túlhasználati forgatókönyv létrehozása teszteléshez
Az AppCreationScripts mappában található BulkCreateGroups.ps1 fájllal számos csoportot hozhat létre, és felhasználókat rendelhet hozzájuk. Ez a fájl segít a túlhasználati forgatókönyvek tesztelésében a fejlesztés során. Ne felejtse el módosítani a BulkCreateGroups.ps1 szkriptben megadott felhasználótobjectId.
A túlhasználat kezeléséhez fel kell hívni a Microsoft Graphot a bejelentkezett felhasználó csoporttagságainak olvasásához, ezért az alkalmazásnak rendelkeznie kell a User.Read és a GroupMember.Read.Read.All engedélyekkel a getMemberGroups függvény sikeres végrehajtásához.
Fontos
A túlhasználati forgatókönyv esetében győződjön meg arról, hogy megadta Admin Consent a Microsoft Graph API hatókörét GroupMember.Read.All az ügyfél- és szolgáltatásalkalmazások számára is. További információkért tekintse meg a cikk korábbi, alkalmazásregisztrációs lépéseit.
A Microsoft Entra ID alkalmazásregisztrációjának frissítése (java-spring-webapp-groups)
Az alkalmazásregisztráció frissítéséhez kövesse az alábbi lépéseket:
Lépjen vissza az Azure Portalra.
A navigációs panelen válassza az Azure Active Directoryt, majd válassza a Alkalmazásregisztrációk (előzetes verzió) lehetőséget.
Az eredményként kapott képernyőn válassza ki az
java-spring-webapp-groupsalkalmazást.Az alkalmazás regisztrációs oldalán válassza a Hitelesítés lehetőséget a menüben.
Az Átirányítási URI-k szakaszban frissítse a válasz URL-címeket, hogy megfeleljenek az Azure-üzemelő példány hely URL-címének – például
https://java-spring-webapp-groups.azurewebsites.net/login/oauth2/code/.
Fontos
Ha az alkalmazás memóriabeli tárolót használ, az Azure App Services lepörgeti a webhelyet, ha inaktív, és az alkalmazás által tárolt rekordok kiürítve lesznek. Emellett, ha növeli a webhely példányszámát, a kérelmek el lesznek osztva a példányok között. Így az alkalmazásrekordok nem azonosak az egyes példányokon.
További információ
- Microsoft Identitásplatform dokumentációja
- A Microsoft Authentication Library (MSAL) áttekintése
- Gyorsútmutató: Alkalmazás regisztrálása a Microsoft Identitásplatformon
- Rövid útmutató: Ügyfélalkalmazás konfigurálása webes API-k eléréséhez
- 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
- Alkalmazás- és szolgáltatásnév-objektumok az Azure Active Directoryban
- Nemzeti felhők
- MSAL-kódminták
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.
Képernyőkép a mintaalkalmazásról.