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 WebLogic-alkalmazást mutat be, amely bejelentkezik a felhasználókba a Microsoft Entra ID-bérlőbe a Java Microsoft Authentication Library (MSAL) használatával.
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 bejelentkezik a felhasználókba a saját Microsoft Entra ID-bérlőjéhez, é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 alapján védi az útvonalait.
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, 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 Microsoft Entra ID-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-azonosítójú bérlőjében, ha bármilyen szervezeti címtárban szeretne fiókokkal dolgozni , azaz több-bérlős módban. Ezt a mintát úgy kell módosítania, hogy személyes Microsoft-fiókkal működjön. Ha még nem hozott létre felhasználói fiókot a Microsoft Entra ID-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.
- Személyes Microsoft-fiók – például Xbox, Hotmail, Live stb. – akkor, ha személyes Microsoft-fiókkal szeretne dolgozni.
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/1-Authentication/sign-in
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. Ez a szakasz bemutatja, hogyan regisztrálhatja az alkalmazást.
Először regisztrálja az 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 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-authentication.A Támogatott fióktípusok területen válasszon az alábbi lehetőségek közül:
- Csak akkor válassza ki a szervezeti címtárban lévő fiókokat, ha csak a bérlő felhasználói által használt alkalmazásokat hoz létre , vagyis 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ást , azaz több-bérlős alkalmazást, válassza bármelyik szervezeti címtárban a Fiókok lehetőséget.
- Válassza ki a fiókokat bármely szervezeti címtárban és személyes Microsoft-fiókban a legszélesebb ügyfélkészlet számára , azaz egy több-bérlős alkalmazást, 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.
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-auth/auth/redirect.
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 kódok létrehozásához és a tanúsítványok feltöltéséhez.
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 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 az alábbi értékek egyikére:- A Microsoft Entra-azonosító bérlőazonosítója, ha az alkalmazást csak ebben a szervezeti címtárban lévő Fiókok lehetőséggel regisztrálta.
- Az a szó
organizations, ha bármilyen szervezeti címtárban regisztrálta az alkalmazást a Fiókok mappában . - Az a szó
common, ha az alkalmazást bármely szervezeti címtárban és személyes Microsoft-fiókban regisztrálta a Fiókok mappában. - Az a szó
consumers, ha az alkalmazást a Személyes Microsoft-fiókok lehetőséggel 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-authenticationAzure 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-authenticationAzure 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 minta üzembe helyezése
Ezek az utasítások feltételezik, hogy telepítette a WebLogicot, és beállított néhány kiszolgálótartományt.
A WebLogicban való üzembe helyezés előtt az alábbi lépésekkel végezze el a minta konfigurációs módosításait, majd hozza létre vagy építse újra a csomagot:
A mintában keresse meg az application.properties vagy authentication.propertiesfájlt, amelyben konfigurálta az ügyfélazonosítót, a bérlőt, az átirányítási URL-címet stb.
Ebben a fájlban módosítsa a
localhost:8080WebLogic által futtatott URL-címre éslocalhost:8443portra mutató hivatkozásokat, amelyeknek alapértelmezés szerint a következőnek kell lenniüklocalhost:7001.Ugyanezt a módosítást kell elvégeznie az Azure-alkalmazásregisztrációban is, ahol az Azure Portalon az Átirányítási URI értékként van beállítva a Hitelesítés lapon.
A minta webkonzolon keresztüli üzembe helyezéséhez kövesse az alábbi lépéseket:
Indítsa el a WebLogic-kiszolgálót a DOMAIN_NAME\bin\startWebLogic.cmd.
Keresse meg a WebLogic webkonzolt a böngészőben a következő címen
http://localhost:7001/console: .Lépjen a Domain Structure Deployments (Tartománystruktúra>telepítései) elemre, válassza a Telepítés lehetőséget, válassza a Fájlok feltöltése lehetőséget, majd keresse meg a Maven használatával létrehozott .war fájlt.
Válassza az Üzembe helyezés telepítése alkalmazásként lehetőséget, válassza a Tovább, a Befejezés, majd a Mentés lehetőséget.
A legtöbb alapértelmezett beállításnak megfelelőnek kell lennie azzal a kivételnel, hogy a mintakonfigurációban vagy az Azure-alkalmazásregisztrációban beállított átirányítási URI-nak megfelelően kell elneveznie az alkalmazást. Vagyis ha az átirányítási URI az
http://localhost:7001/msal4j-servlet-auth, akkor el kell neveznie az alkalmazástmsal4j-servlet-auth.Térjen vissza a tartománystruktúra>üzemelő példányaihoz, és indítsa el az alkalmazást.
Az alkalmazás elindítása után lépjen az
http://localhost:7001/<application-name>/alkalmazáshoz, és hozzá kell férnie az alkalmazáshoz.
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.
- 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 bemutatja, hogyan lehet az MSAL for Java (MSAL4J) használatával bejelentkezni a felhasználókba a Microsoft Entra ID-bérlőbe. Ha saját alkalmazásaiban szeretné használni az MSAL4J-t, akkor azt a Maven használatával kell hozzáadnia a projektjeihez.
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/authwebapp/ | 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. |
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-azonosító 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 ID átirányítja a böngészőt – a hitelesítési kóddal együtt – a felhasználói hitelesítő adatok gyűjtése után. Meg kell egyeznie az átirányítási URI-val a Microsoft Entra ID alkalmazásregisztrációjában az Azure Portalon.SCOPES: A hatókörök az alkalmazás által kért engedélyek. Általában a három hatóköropenid 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áját a authentication.properties fájlban találja. További hatóköröket is hozzáadhat, például
User.Read.
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());
Az útvonalak védelme
További információ arról, hogy a mintaalkalmazás hogyan szűri az útvonalakhoz való hozzáférést: AuthenticationFilter.java. A authentication.properties fájlban a app.protect.authenticated tulajdonság tartalmazza azokat a vesszővel tagolt útvonalakat, amelyekhez csak a hitelesített felhasználók férhetnek hozzá, ahogyan az alábbi példában látható:
# for example, /token_details requires any user to be signed in and does not require special roles claim(s)
app.protect.authenticated=/token_details
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. Ezt a három hatókört az MSAL kéri, és alapértelmezés szerint a Microsoft Entra ID adja meg.
További információ
- Microsoft Authentication Library (MSAL) Java-hoz
- MSAL Java-referenciadokumentáció
- 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
Következő lépés
Java WebLogic-alkalmazások üzembe helyezése a WebLogicban azure-beli virtuális gépeken