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 bemutatja, hogyan hozhat létre olyan Java Tomcat-alkalmazást, amely a Java-hoz készült Microsoft Authentication Library (MSAL) használatával jelentkezik be a felhasználókba. Az alkalmazás a Microsoft Entra ID biztonsági csoporttagságon alapuló lapokhoz való hozzáférést is korlátozza.
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 az MSAL for Java (MSAL4J) használatával jelentkezik be a felhasználókba egy Microsoft Entra ID-bérlőbe, és beszerez egy azonosító jogkivonatot a Microsoft Entra ID-ból. Az azonosító jogkivonat igazolja, hogy a felhasználó hitelesítése ezzel a bérlővel történik. Az alkalmazás a felhasználó hitelesítési állapota és a csoporttagság alapján védi az útvonalakat.
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 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 ID-bérlőjében.
- Két biztonsági csoport,
GroupAdminvalamintGroupMembera tesztelni kívánt felhasználók.
Ajánlások
- Néhány ismerős a Java / Jakarta Servlets.
- 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 3-java-servlet-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-servlet-webapp-groups)
Először regisztráljon egy új alkalmazást az Azure Portalon a rövid útmutató utasításait követve: Alkalmazás regisztrálása a Microsoft Identitásplatform.
Ezután a következő lépésekkel fejezze be a regisztrációt:
Lépjen a Microsoft Identitásplatform fejlesztőknek Alkalmazásregisztrációk lapra.
Új regisztráció kiválasztása.
A megjelenő Alkalmazás regisztrálása lapon adja meg az alábbi 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-servlet-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 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/msal4j-servlet-groups/auth/redirect.
- 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.
Válassza a Mentés lehetőséget a módosítások mentéséhez.
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: 1 év, 2 év alatt vagy Soha nem jár le.
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 ki az API-engedélyeket a navigációs panelen a lap megnyitásához, hogy hozzáférést adjon az alkalmazás által igényelt 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 User.Read és a GroupMember.Read.All lehetőséget a listából. Szükség esetén használja a keresőmezőt.
Jelölje be az Engedélyek hozzáadása lehetőséget.
GroupMember.Read.Allrendszergazdai hozzájárulást igényel, ezért válassza a (z) {tenant} rendszergazdai hozzájárulásának megadása/visszavonása lehetőséget, majd válassza az Igen lehetőséget, amikor a rendszer megkérdezi, hogy meg szeretné-e adni a kért engedélyeket a bérlő összes fiókjához. A művelet végrehajtásához Microsoft Entra-azonosítójú bérlői rendszergazdának kell lennie.
Az alkalmazás (java-servlet-webapp-groups) 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.
Nyissa meg a projektet az IDE-ben.
Nyissa meg a ./src/main/resources/authentication.properties fájlt.
Keresse meg a sztringet
{enter-your-tenant-id-here}. Cserélje le a meglévő értéket a Microsoft Entra-bérlőazonosítóra, ha az alkalmazást csak ebben a szervezeti címtárban lévő fiókokra regisztrálta.Keresse meg a sztringet
{enter-your-client-id-here}, és cserélje le a meglévő értéket az alkalmazásazonosítóra vagyclientIdazjava-servlet-webapp-groupsAzure 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-groupsAzure Portalon.
Biztonsági beállítások konfigurálása
Az alábbi lehetőségek állnak rendelkezésre arra, hogyan konfigurálhatja tovább az alkalmazásokat 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 a Biztonsági csoportok vagy a Minden csoport (beleértve a terjesztési listákat, de az alkalmazáshoz rendelt csoportokat nem) lehetőséget. Ha mindkét beállítást 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ást 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.
Más beállítások – például biztonsági csoportok vagy minden csoport (beleértve a terjesztési listákat, de az alkalmazáshoz rendelt csoportokat nem) kiválasztásakor az alkalmazás nem fogja tudni használni ezt a lehetőséget.
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 , amelyhez a felhasználó hozzá van rendelve az azonosító jogkivonat csoportok jogcímében.
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 beállítás azt eredményezi, hogy a Microsoft Entra ID elküldi azon csoportok objektumazonosítóját, amelyhez a felhasználó hozzá van rendelve a hozzáférési jogkivonat csoportigénylésében.
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ési képernyőjének 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 például csonkolt
Managed application in ...lehet. 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á.
Az alkalmazás (java-servlet-webapp-groups) konfigurálása csoportazonosítók felismeréséhez
Az alkalmazás konfigurálásához kövesse az alábbi lépéseket:
Fontos
Ha a tokenkonfiguráció lapon a groupID-n kívül más lehetőséget választott – például DNSDomain\sAMAccountName –, contoso.com\Test Group akkor az objektumazonosító helyett a következő lépésekben kell megadnia a csoport nevét:
Nyissa meg a ./src/main/resources/authentication.properties fájlt.
Keresse meg a sztringet
{enter-your-admins-group-id-here}, és cserélje le a meglévő értéket aGroupAdmincsoport objektumazonosítójára, amelyet az Azure Portalról másolt. Távolítsa el a kapcsos zárójeleket a helyőrző értékből is.Keresse meg a sztringet
{enter-your-admins-group-id-here}, és cserélje le a meglévő értéket aGroupAdmincsoport objektumazonosítójára, amelyet az Azure Portalról másolt. Távolítsa el a kapcsos zárójeleket a helyőrző értékből is.
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 különböző alkalmazáskiszolgálókon 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.13.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.homePagetelepí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.netkell azapp.homePageértéket. Győződjön meg arról, hogy a protokollt is módosította a másikrahttphttps.# 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.netA 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.secretszá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/redirectpé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 a Csoportok lehetőséget a bejelentkezett felhasználó biztonsági csoporttagságával kapcsolatos információk megtekintéséhez.
- Válassza a Csak rendszergazda vagy a Normál felhasználó lehetőséget a csoportok védett végpontjaihoz való hozzáféréshez.
- Ha a bejelentkezett felhasználó a
GroupAdmincsoportban van, a felhasználó mindkét oldalt beírhatja. - Ha a bejelentkezett felhasználó a
GroupMembercsoportban van, a felhasználó csak a Normál felhasználó lapot adhatja meg. - Ha a bejelentkezett felhasználó egyik csoportban sem található, a felhasználó nem férhet hozzá a két oldal egyikéhez sem.
- Ha a bejelentkezett felhasználó a
- A kijelentkezéshez használja a sarokban lévő gombot.
- A kijelentkezés után válassza az Azonosító jogkivonat részletei lehetőséget , és figyelje meg, hogy az alkalmazás hibaüzenetet
401: unauthorizedjelenít meg az azonosító jogkivonat jogcímei helyett, ha a felhasználó nincs engedélyezve.
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 tartalmazhatja a csoportok jogcímét. Ha túl sok csoport van a kibocsátáshoz az azonosító jogkivonatban, a minta a Microsoft Graph SDK for Java használatával szerzi be a csoporttagság adatait a Microsoft Graphból. Attól függően, hogy a felhasználó melyik csoportokhoz tartozik, a bejelentkezett felhasználó a védett lapok egyikéhez, egyikéhez vagy mindkettőhöz hozzáférhet. Admins OnlyRegular Users
Ha replikálni szeretné a minta viselkedését, mSAL4J-t és Microsoft Graph SDK-t kell hozzáadnia a projektekhez a Maven használatával. A pom.xml fájlt és a segítők és authservletsmappák tartalmát az src/main/java/com/microsoft/azuresamples/msal4j mappába másolhatja. 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 |
|---|---|
| src/main/java/com/microsoft/azuresamples/msal4j/groupswebapp/ | 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 osztályokban van definiálva, amelyek neve Servletvégződik. |
| 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. |
| LICENC | A minta licence. |
Csoportok jogcímének feldolgozása jogkivonatokban, beleértve a túlhasználat kezelését
Az alábbi szakaszok azt ismertetik, hogy az alkalmazás hogyan dolgozza fel a csoportok jogcímeit.
A csoportok jogcíme
A bejelentkezett felhasználó által bejelentkezett biztonsági csoportok objektumazonosítója a jogkivonat csoportigénylésében lesz visszaadva, amely az alábbi példában látható:
{
...
"groups": [
"0bbe91cc-b69e-414d-85a6-a043d6752215",
"48931dac-3736-45e7-83e8-015e6dfd6f7c",]
...
}
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ében 6. Ha egy felhasználó több csoportnak is tagja, mint a túlhasználati korlát, akkor a Microsoft Identitásplatform nem bocsátja ki a csoportazonosítókat a jogkivonatban szereplő csoportokban. 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, ahogyan az az alábbi példában látható:
{
...
"_claim_names": {
"groups": "src1"
},
{
"_claim_sources": {
"src1": {
"endpoint":"[Graph Url to get this user's group membership from]"
}
}
...
}
A túlhasználati forgatókönyv létrehozása ebben a mintában teszteléshez
A túlhasználati forgatókönyv létrehozásához kövesse az alábbi lépéseket:
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ót
objectId.Amikor futtatja ezt a példát, és túllépés történik, a _claim_names a kezdőlapon látható, miután a felhasználó bejelentkezett.
Határozottan 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ő.
Ha nem tudja elkerülni a csoporttúllépést, javasoljuk, hogy a következő lépésekkel dolgozza fel a csoportok jogcímét a jogkivonatában:
- Ellenőrizze, hogy a jogcím _claim_names-e, és az egyik érték csoport. Ez a jogcím túlhasználatot jelez.
- Ha megtalálta, hívja fel a _claim_sources megadott végpontot a felhasználói csoportok lekéréséhez.
- Ha egyik sem található, tekintse meg a felhasználói csoportok csoportokra vonatkozó jogcímét.
Feljegyzés
A túlhasználat kezeléséhez a Microsoft Graph hívása szükséges a bejelentkezett felhasználó csoporttagságainak olvasásához, ezért az alkalmazásnak rendelkeznie kell a GroupMember.Read.All engedéllyel a getMemberObjects függvény sikeres végrehajtásához.
A Microsoft Graph programozásával kapcsolatos további információkért tekintse meg a Microsoft Graph fejlesztőknek készült bemutatása című videót.
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
/authorizeMicrosoft Entra ID-bérlőhöz. Az MSAL4J-példányConfidentialClientApplicationegy 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 á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_accesselegendő 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
User.Read.
- Á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és tartalmaz egy engedélyezési kódot.
A
ConfidentialClientApplicationpé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
acquireTokena 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 aIdentityContextDatamunkamenetbő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()); // handle groups overage if it has occurred. handleGroupsOverage(contextAdapter);Az előző lépés után kinyerheti a csoporttagságokat egy példány
IdentityContextDatameghívásávalcontext.getGroups().Ha a felhasználó túl sok – 200-nál több – csoport tagja, a hívás
context.getGroups()üres lehet, ha nem a híváshozhandleGroupsOverage(). Eközben visszatértrue,context.getGroupsOverage()jelezve, hogy túlhasználat történt, és a csoportok teljes listájának lekéréséhez a Microsoft Graph hívására van szükség. Tekintse meg ahandleGroupsOverage()AuthHelper.java metódusát, amelyből megtudhatja, hogyan használjacontext.setGroups()az alkalmazás a túlhasználatot.
Az útvonalak védelme
Tekintse meg AuthenticationFilter.java , hogy a mintaalkalmazás hogyan szűri az útvonalakhoz való hozzáférést. 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 groups claim
app.protect.authenticated=/token_details
A vesszővel elválasztott szabálykészletekben app.protect.groups 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 a csoporttagságok szóközzel elválasztott listáját is tartalmazzák. Hitelesítés után csak a megfelelő csoportok legalább egyikéhez tartozó felhasználók férhetnek hozzá ezekhez az útvonalakhoz.
# define short names for group IDs here for the app. This is useful in the next property (app.protect.groups).
# EXCLUDE the curly braces, they are in this file only as delimiters.
# example:
# app.groups=groupA abcdef-qrstuvw-xyz groupB abcdef-qrstuv-wxyz
app.groups=admin {enter-your-admins-group-id-here}, user {enter-your-users-group-id-here}
# A route and its corresponding group(s) that can view it, <space-separated>; the start of the next route & its group(s) is delimited by a <comma-and-space-separator>
# this says: /admins_only can be accessed by admin group, /regular_user can be accessed by admin group and user group
app.protect.groups=/admin_only admin, /regular_user admin user
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_tokenkódba kódolja a hatóköröket.
Az alkalmazás által kért hatókörökért lásd : authentication.properties. Alapértelmezés szerint az alkalmazás a hatókörök értékét a következőre GroupMember.Read.Allállítja be: . Erre a Microsoft Graph API-hatókörre akkor van szükség, ha az alkalmazásnak meg kell hívnia a Graphot a felhasználó csoporttagságainak lekéréséhez.
További információ
- Microsoft Authentication Library (MSAL) Java-hoz
- Microsoft Identitásplatform (Microsoft Entra-azonosító fejlesztőknek)
- 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