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 JBoss EAP-alkalmazást mutat be, amely bejelentkezik a felhasználókba, és hozzáférési jogkivonatot szerez be a Microsoft Graph meghívásához. A Java-hoz készült Microsoft Authentication Libraryt (MSAL) használja.
Az alábbi ábrán az alkalmazás topológiája látható:
Az ügyfélalkalmazás az MSAL for Java (MSAL4J) használatával egy felhasználó bejelentkeztetésére, valamint a Microsoft Graph számára hozzáférési token beszerzésére szolgál a Microsoft Entra ID-tól. A hozzáférési jogkivonat igazolja, hogy a felhasználó jogosult a Hatókörben meghatározott Microsoft Graph API-végpont elérésére.
Előfeltételek
- Java 8 vagy újabb
- 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, ha csak a szervezeti címtárban lévő fiókokkal szeretne dolgozni , azaz egybérlős módban. Ha még nem hozott létre felhasználói fiókot a bérlőjében, ezt a folytatás előtt tegye meg. További információ: Felhasználók létrehozása, meghívása és törlése.
- Egy felhasználói fiók bármely szervezet Microsoft Entra ID-bérlőjében, ha bármely szervezeti címtárban szeretne fiókokkal dolgozni, azaz több-bérlős üzemmódban. Ezt a mintát úgy kell módosítani, hogy személyes Microsoft-fiókkal működjön. Ha még nem hozott létre felhasználói fiókot a bérlőben, ezt mindenképpen tegye meg, mielőtt továbblép. További információ: Felhasználók létrehozása, meghívása és törlése.
- Személyes Microsoft-fiók – például Xbox, Hotmail, Live stb. – akkor, ha személyes Microsoft-fiókkal szeretne dolgozni.
- JBoss EAP
- Visual Studio Code
- Azure-eszközök a Visual Studio Code-hoz
Ajánlások
- Némi ismeret a Java / Jakarta Servlets terén.
- A Linux/OSX terminál ismerete.
- jwt.ms a tokenjei 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 naprakész maradjon a legújabb fejleményekkel kapcsolatban.
A minta beállítása
Az alábbi szakaszok bemutatják, hogyan állíthatja be a mintaalkalmazást.
A mintaadattár klónozása vagy letöltése
A minta klónozásához nyisson meg egy Bash-ablakot, és használja a következő parancsot:
git clone https://github.com/Azure-Samples/ms-identity-msal-java-samples.git
cd 3-java-servlet-web-app/2-Authorization-I/call-graph
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őben
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-call-graph)
Először regisztráljon egy új alkalmazást az Azure Portalon a Rövid útmutató: Alkalmazás regisztrálása a Microsoft identitásplatformon című cikk utasításait követve.
Ezután a következő lépésekkel fejezze be a regisztrációt:
Lépjen a fejlesztőknek készült Microsoft identitásplatform Alkalmazásregisztrációk lapjára.
Új regisztráció kiválasztása.
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-servlet-webapp-call-graph.A Támogatott fióktípusok területen válasszon az alábbi lehetőségek közül:
- Válassza a Csak ebben a szervezeti címtárban lévő fiókok lehetőséget, ha olyan alkalmazást hoz létre, amelyet csak a bérlő felhasználói használnak – vagyis egy egy-bérlős alkalmazást.
- Ha azt szeretné, hogy bármely Microsoft Entra ID-bérlő felhasználói használhassák az alkalmazását – vagyis egy több-bérlős alkalmazást –, válassza a Bármely szervezeti címtárban lévő fiókok lehetőséget.
- Válassza a Bármely szervezeti címtárban lévő fiókok és személyes Microsoft-fiókok lehetőséget a lehető legszélesebb ügyfélkörhöz – vagyis egy olyan több-bérlős alkalmazáshoz, amely a személyes Microsoft-fiókokat is támogatja.
Válassza ki a Személyes Microsoft-fiókokat , amelyeket csak személyes Microsoft-fiókok felhasználói használhatnak – például Hotmail, Live, Skype és Xbox fiókokat.
A Redirect URI szakaszban válassza ki a Web lehetőséget a kombinált listában, majd adja meg a következő átirányítási URI-t: .
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 lejáratot a titkos kódhoz, vagy adjon meg egy egyéni élettartamot. Az ügyfél titkos kulcsainak maximális élettartama 24 hónap, és Microsoft 12 hónapnál rövidebb lejáratot javasol. Éles alkalmazások esetén előnyben részesítse a tanúsítványt vagy az összevont identitás hitelesítő adatait az ügyfél titkos kulcsával szemben.
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.
Jelölje be az Engedélyek 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 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.
Az alkalmazás (java-servlet-webapp-call-graph) 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:
Megjegyzé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 karakterláncot
{enter-your-tenant-id-here}. Cserélje le a meglévő értéket az alábbi értékek egyikére:- Az Ön Microsoft Entra-azonosítójú bérlőjének azonosítója, ha az alkalmazását a Csak a szervezeti címtárban lévő fiókok beállítással regisztrálta.
- A(z)
organizationsszó, ha az alkalmazást a Bármely szervezeti címtárban lévő fiókok beállítással regisztrálta. - A(z)
common, ha az alkalmazást a Bármely szervezeti címtárban lévő fiókok és személyes Microsoft-fiókok beállítással regisztrálta. - A szó
consumers, ha az alkalmazást a Személyes Microsoft-fiókok lehetőséggel regisztrálta.
Keresse meg a(z)
{enter-your-client-id-here}karakterláncot, és cserélje le a meglévő értéket az alkalmazásazonosítóra vagy a(z)clientIdértékre, amelyet a(z)java-servlet-webapp-call-graphalkalmazáshoz az Azure Portalból másolt.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-call-graphAzure Portalon.
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.
A példa futtatása
Az alábbi szakaszok bemutatják, hogyan helyezheti üzembe a mintát Azure-alkalmazás szolgáltatásban.
Előfeltételek
Maven-bővítmény Azure App 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 szolgáltatás Azure-alkalmazás üzembe helyezési folyamata 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 mellette látható Maven-parancsot az üzembe helyezés konfigurálásához. Ez a parancs segít beállítani az App Service operációs rendszer, a Java és a Tomcat verziót.
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:configÚj futtatási konfiguráció létrehozásához nyomja le az Y billentyűt, majd nyomja le az Enter billentyűt.
Az operációs rendszer értékének definiálásához nyomja le a 2 billentyűt Linux esetén, 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 az 1 billentyűt a JBosseap7-hez, 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 P1v3 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-1707220080695
ResourceGroup : msal4j-servlet-auth-1707220080695-rg
Region : centralus
PricingTier : P1v3
OS : Linux
Java Version: Java 11
Web server stack: JBosseap 7
Deploy to slot : false
Confirm (Y/N) [Y]:
[INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 26.196 s
[INFO] Finished at: 2024-02-06T11:48:16Z
[INFO] ------------------------------------------------------------------------
Miután megerősítette a választási lehetőségeket, a beépülő modul hozzáadja a beépülő modul konfigurációját és a szükséges 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 | Verzió |
|---|---|---|---|
schemaVersion |
false | A konfigurációs séma verziója. A támogatott értékek a következők: v1 és v2. |
1.5.2 |
subscriptionId |
false | Az előfizetés azonosítója. | 0.1.0+ |
resourceGroup |
true | Az alkalmazás Azure-erőforráscsoportja. | 0.1.0+ |
appName |
true | Az alkalmazás neve. | 0.1.0+ |
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. |
0.1.0+ |
pricingTier |
false | Az alkalmazás tarifacsomagja. Az alapértelmezett érték a P1v2 az éles számítási feladatokhoz. A Java-fejlesztés és -tesztelés ajánlott minimális értéke a B2. További információ: App Service díjszabása |
0.1.0+ |
runtime |
false | A futtatókörnyezet konfigurációja. További információ: Konfiguráció részletei. | 0.1.0+ |
deployment |
false | Az üzembehelyezési konfiguráció. További információ: Konfiguráció részletei. | 0.1.0+ |
A konfigurációk teljes listáját a beépülő modul referenciadokumentációjában találja. Az összes Azure Maven-bővítmény egy közös konfigurációkészletet használja. 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 későbbi használatra elmentse a appName és resourceGroup é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, majd módosítsa a
app.homePageértékét az üzembe helyezett 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 átállítottahttp-ról/-rőlhttps-re.# 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 található egy beállítás a(z) aad.secret számára. Nem ajánlott ezt az értéket az App Service-ben üzembe helyezni. Az sem jó gyakorlat, ha ezt az értéket a kódban hagyja, és esetleg feltölti a Git-repozitóriumba. 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 az Azure App Service-be üzembe helyezett alkalmazás URI-jára változik, a Microsoft Entra ID alkalmazásregisztráció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 fejlesztőknek készült Microsoft identitásplatform Alkalmazásregisztrációk lapjára.
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 Web - Átirányítási URI-k szakaszban válassza a 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 arra, hogy üzembe helyezze az alkalmazását az Azure App Service-be. 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. A gombon Sign In látható, amikor először futtatja az alkalmazást.
- 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 ezt jelzi: Kijelentkezés, é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.
- A Hívásdiagram lehetőséget választva hívást kezdeményezhet a Microsoft Graph /me végpontjához, és megtekintheti a kapott felhasználói adatokat.
- A kijelentkezéshez használja a sarokban lévő gombot.
Tudnivalók a kódról
Ez a minta az MSAL for Java (MSAL4J) használatával egy felhasználó bejelentkeztetésére és a Microsoft Graph API-hoz szükséges hozzáférési jogkivonat igénylésére szolgál. A Microsoft Graph SDK for Java használatával szerez be adatokat a Graphból. Ezeket a kódtárakat a Maven használatával kell hozzáadnia a projektekhez.
Ha replikálni szeretné a minta viselkedését, az src/main/java/com/microsoft/azuresamples/msal4j mappába másolhatja a pom.xml fájlt, valamint a segítők és authservlets mappák tartalmát. Szüksége van a authentication.properties fájlra is. Ezek az osztályok és fájlok általános kódot tartalmaznak, amelyeket számos alkalmazásban használhat. A minta többi részét is másolhatja, de a többi osztály és fájl kifejezetten a minta céljának megfelelően van létrehozva.
Tartalom
Az alábbi táblázat a mintaprojekt mappájának tartalmát mutatja be:
| Fájl/mappa | Leírás |
|---|---|
| src/main/java/com/microsoft/azuresamples/msal4j/callgraphwebapp/ | 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 a 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 licenc. |
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-azonosító engedélyezési URL-címének elkészítésében, valamint a hitelesítési jogkivonatok hozzáférési jogkivonatra való cseréjében.
// 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, hogy elküld egy kérelmet az Ön Microsoft Entra ID-bérlőjéhez tartozó
/authorizevégpontra. 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: EgyAuthorizationRequestUrllétrehozásához megadandó paraméterek. -
REDIRECT_URI: Ahol a Microsoft Entra ID átirányítja a böngészőt – a hitelesítési kóddal együtt – a felhasználói hitelesítő adatok gyűjtése után. Meg kell egyeznie az átirányítási URI-val a Microsoft Entra ID alkalmazásregisztrációjában az Azure Portalon -
SCOPES: Hatókörök az alkalmazás által kért engedélyek.- Az ID-jogkivonat-válasz megkapásához általában elegendő a három hatókör
openid profile offline_access. - 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.
- Az ID-jogkivonat-válasz megkapásához általában elegendő 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 beváltja ezt az engedélyezési kódot identitástokenre és hozzáférési tokenre a Microsoft Entra ID-ná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
acquireTokensikeres, a jogkivonat jogcímei kinyerhetők. Ha a nonce-ellenőrzés sikeres, az eredmények a(z)context- a(z)IdentityContextDataegy példányába - kerülnek, és mentésre kerülnek a munkamenetbe. Az alkalmazás ezután a munkamenetből aIdentityContextDatapéldányát aIdentityContextAdapterServletegy példányán keresztül példányosíthatja, valahányszor hozzá kell férnie, amint az a következő kódban látható:// parse IdToken claims from the IAuthenticationResult: // (the next step - validateNonce - requires parsed claims) context.setIdTokenClaims(result.idToken()); // if nonce is invalid, stop immediately! this could be a token replay! // if validation fails, throws exception and cancels auth: validateNonce(context); // set user to authenticated: context.setAuthResult(result, client.tokenCache().serialize());
Az útvonalak védelme
További információ arról, hogy a mintaalkalmazás hogyan szűri az útvonalakhoz való hozzáférést: AuthenticationFilter.java.
A authentication.properties fájlban a app.protect.authenticated tulajdonság tartalmazza azokat a vesszővel tagolt útvonalakat, amelyekhez csak a hitelesített felhasználók férhetnek hozzá, ahogyan az alábbi példában látható:
# for example, /token_details requires any user to be signed in and does not require special roles or groups claim(s)
app.protect.authenticated=/token_details, /call_graph
Hívási gráf
Amikor a felhasználó a /call_graph elemre navigál, az alkalmazás létrehozza a Java Graph SDK-beli IGraphServiceClient egy példányát, és átadja neki a bejelentkezett felhasználó hozzáférési jogkivonatát. A Graph-ügyfél a hozzáférési jogkivonatot a Authorization kérések fejlécében helyezi el. Az alkalmazás ezután felkéri a Graph-ügyfelet, hogy hívja meg a végpontot, /me hogy adja meg az aktuálisan bejelentkezett felhasználó adatait.
Ha már rendelkezik érvényes hozzáférési jogkivonattal a Graph Service-hez a User.Read hatókörrel, csak a következő kódra van szüksége a /me végponthoz való hozzáféréshez:
//CallGraphServlet.java
User user = GraphHelper.getGraphClient(contextAdapter).me().buildRequest().get();
Hatókörök
A hatókörök megadják a Microsoft Entra ID számára, hogy az alkalmazás milyen szintű hozzáférést kér.
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 hozzájárul, és tokent kap, a jóváhagyott hatókörök bele lesznek kódolva az így kapott access_token-ba.
Az alkalmazás által kért hatóköröket lásd a(z) authentication.properties fájlban. Alapértelmezés szerint az alkalmazás a hatókörök értékét a következőre User.Readállítja be: . Ez a Microsoft Graph API-hatókör az aktuális bejelentkezett felhasználó adatainak elérésére szolgál. Az adatok elérésére szolgáló gráfvégpont a következő https://graph.microsoft.com/v1.0/me: . Az erre a végpontra irányuló érvényes kéréseknek olyannak kell lenniük access_token , amely tartalmazza a hatókört User.Read a Authorization fejlécben.
További információ
- Microsoft Authentication Library (MSAL) Javahoz
- 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