A Java WebLogic-alkalmazások engedélyezése a felhasználók bejelentkezéséhez és a Microsoft Graph eléréséhez

Ez a cikk egy olyan Java WebLogic-alkalmazást mutat be, amely bejelentkezteti a felhasználókat, és hozzáférési tokent szerez a Microsoft Graph hívásához. A Microsoft Authentication Library (MSAL) for Java könyvtárat használja.

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-alapú MSAL-t (MSAL4J) használja egy felhasználó bejelentkeztetésére és egy hozzáférési jogkivonat beszerzésére a Microsoft Graphhoz 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óért lásd: Microsoft Entra ID-bérlő beszerzé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őben, ezt mindenképpen tegye meg, mielőtt továbblép. További információkért lásd: 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ókért lásd: 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.
  • WebLogic
  • Visual Studio Code
  • Azure-eszközök a Visual Studio Code-hoz

Ajánlások

  • Némi ismeret a Java / Jakarta szervletek 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ére és hibaelhárításra.
  • Kövesse a Microsoft Entra Blogot, hogy naprakész maradjon a legújabb fejleményekről.

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

Alternatív megoldásként keresse meg a ms-identity-msal-java-samples tárházat, majd töltse le .zip fájlként, és csomagolja ki a merevlemezére.

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:

  1. Jelentkezzen be az Azure Portalra.

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

Az alkalmazás regisztrálása (java-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ű cikkben található utasításokat követve.

Ezután a következő lépésekkel fejezze be a regisztrációt:

  1. Lépjen a Microsoft fejlesztői identitásplatform Alkalmazásregisztrációk oldalára.

  2. Válassza az Új regisztráció lehetőséget.

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

    • A Név részben adjon meg egy beszédes alkalmazásnevet, amely megjelenik az alkalmazás felhasználói számára – például: .

    • A Támogatott fióktípusok területen válasszon az alábbi lehetőségek közül:

      • Ha olyan alkalmazást hoz létre, amelyet csak az Ön bérlőjében lévő felhasználók használhatnak, vagyis egy egybérlős alkalmazást, válassza a Csak ebben a szervezeti címtárban lévő fiókok lehetőséget.
      • Válassza a Bármely szervezeti címtárban lévő fiókok lehetőséget, 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 és személyes Microsoft-fiókok lehetőséget a lehető legszélesebb ügyfélkör eléréséhez – vagyis egy olyan 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.

    • A Redirect 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: .

  4. Válassza a Regisztráció elemet az alkalmazás létrehozásához.

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

  6. Válassza a Mentés lehetőséget a módosítások mentéséhez.

  7. 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.

  8. A Ügyfél titkos kulcsai szakaszban válassza az Új ügyfél-titkos kulcs lehetőséget.

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

  10. 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.

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

  12. 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.

  13. 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.

  14. Jelölje be az Engedélyek hozzáadása lehetőséget.

  15. Győződjön meg arról, hogy a Microsoft API-k lap ki van jelölve.

  16. A Gyakran használt Microsoft API-k szakaszban válassza a Microsoft Graph lehetőséget.

  17. 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.

  18. 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 a ugyanaz, mint a vagy a .

  1. Nyissa meg a projektet az IDE-ben.

  2. Nyissa meg a ./src/main/resources/authentication.properties fájlt.

  3. Keresse meg a(z) karakterláncot. Cserélje le a meglévő értéket az alábbi értékek egyikére:

    • A Microsoft Entra ID-bérlőazonosítója, ha az alkalmazását a Csak ebben a szervezeti címtárban lévő fiókok lehetőséggel regisztrálta.
    • A szó, ha az alkalmazását a Bármely szervezeti címtárban lévő fiókok lehetőséggel regisztrálta.
    • A szó, ha az alkalmazását a Bármely szervezeti címtárban lévő fiókok és személyes Microsoft-fiókok beállítással regisztrálta.
    • A(z) szó, ha az alkalmazását a Személyes Microsoft-fiókok beállítással regisztrálta.
  4. Keresse meg a karakterláncot, és cserélje le a meglévő értéket az Azure Portalból kimásolt alkalmazás alkalmazásazonosítójára vagy értékére.

  5. Keresse meg a(z) karakterláncot, és cserélje le a meglévő értéket arra az értékre, amelyet a alkalmazás létrehozása során mentett az Azure 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:

  1. A mintában keresse meg azt a application.properties vagy authentication.properties fájlt, amelyben konfigurálta az ügyfélazonosítót, a bérlőazonosítót, az átirányítási URL-t és így tovább.

  2. Ebben a fájlban módosítsa a(z) vagy hivatkozásokat arra az URL-re és portra, amelyen a WebLogic fut, amely alapértelmezés szerint .

  3. Ugyanezt a módosítást az Azure-alkalmazásregisztrációban is el kell végeznie, ahol az Azure Portalon a Hitelesítés lapon, a Redirect URI értékénél kell beállítania.

A minta WebLogicba történő telepítéséhez a webkonzolon keresztül kövesse az alábbi lépéseket:

  1. Indítsa el a WebLogic-kiszolgálót a DOMAIN_NAME\bin\startWebLogic.cmd.

  2. Nyissa meg a böngészőben a WebLogic webkonzolt itt: .

  3. Lépjen a Domain StructureTelepítések elemre, válassza a Telepítés lehetőséget, válassza a Saját fájlok feltöltése lehetőséget, majd keresse meg a Mavennel létrehozott .war fájlt.

  4. Válassza az 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.

  5. 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 a , akkor nevezze el az alkalmazást .

  6. Térjen vissza a Domain StructureTelepítések oldalra, majd indítsa el az alkalmazást.

  7. Az alkalmazás elindítása után navigáljon ide: , és el kell tudnia érni az alkalmazást.

A minta vizsgálata

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

  1. Figyelje meg a bejelentkezett vagy kijelentkezett állapotot a képernyő közepén.
  2. Válassza a sarokban található környezetérzékeny gombot. Ez a gomb Bejelentkezés feliratot mutat az alkalmazás első indításakor.
  3. A következő lapon kövesse az utasításokat, és jelentkezzen be egy fiókkal a Microsoft Entra ID-bérlőben.
  4. A hozzájárulási képernyőn figyelje meg a kért hatóköröket.
  5. Figyelje meg, hogy a környezetfüggő gombon most ez áll: Kijelentkezés, és megjelenik rajta a felhasználóneve.
  6. Válassza az Azonosító jogkivonat részletei lehetőséget az azonosító jogkivonat egyes dekódolt jogcímeinek megtekintéséhez.
  7. Válassza a Call Graph lehetőséget, hogy hívást kezdeményezzen a Microsoft Graph /me endpoint végpontjára, és megtekinthesse a lekért felhasználói adatok egy részét.
  8. 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 kér le 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 licencje.

ConfidentialClientApplication

A példány a AuthHelper.java fájlban jön létre, ahogyan az a következő példában 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:

  1. A bejelentkezési folyamat első lépése, hogy elküld egy kérést a Microsoft Entra ID-bérlőjéhez tartozó végpontra. Az MSAL4J példányt egy hitelesítési kérés URL-címének összeállítására használják. 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:

    • : Azok a paraméterek, amelyeket egy létrehozásához be kell állítani.
    • : Az a hely, ahová a Microsoft Entra ID átirányítja a böngészőt – az engedélyezési kóddal együtt – miután összegyűjtötte a felhasználó hitelesítő adatait. Meg kell egyeznie a Microsoft Entra ID alkalmazásregisztrációjában, az Azure Portalon megadott átirányítási URI-val.
    • : Hatókörök az alkalmazás által kért engedélyek.
      • Általában a három hatókör elegendő az ID-jogkivonat-válasz 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 a következőt: .
  2. 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. Az erre a végpontra irányuló érvényes kérés tartalmaz egy engedélyezési kódot.

  3. A példány ezután beváltja ezt az engedélyezési kódot egy azonosító tokenre és egy hozzáférési tokenre a Microsoft Entra ID-tó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:

    • : Azok a paraméterek, amelyeket be kell állítani ahhoz, hogy az engedélyezési kódot ID-tokenre és/vagy hozzáférési tokenre lehessen cserélni.
    • : Az átirányítási végponton kapott engedélyezési kód.
    • : Az előző lépésben használt átirányítási URI-t ismét át kell adni.
    • : Az előző lépésben használt hatóköröket újra át kell adni.
  4. Ha a sikeres, a rendszer kinyeri a token jogcímeit. Ha a nonce-ellenőrzés sikeres, az eredmények a — a egy példánya — elembe kerülnek, és mentésre kerülnek a munkamenetben. Az alkalmazás ezután a munkamenetből, a egy példányán keresztül példányosíthatja a elemet, valahányszor hozzá kell férnie, ahogy 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. Az authentication.properties fájlban a tulajdonság azokat a vesszővel elválasztott útvonalakat tartalmazza, amelyekhez csak a hitelesített felhasználók férhetnek hozzá, amint az a következő 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ó átnavigál a oldalra, az alkalmazás létrehozza a Java Graph SDK-ból származó egy példányát, átadva neki a bejelentkezett felhasználó hozzáférési jogkivonatát. A Graph-ügyfél a hozzáférési tokent a kérései fejléceiben helyezi el. Az alkalmazás ezután kéri a Graph-klienst, hogy hívja meg a végpontot a jelenleg bejelentkezett felhasználó adatainak lekéréséhez.

Ha már rendelkezik érvényes hozzáférési tokennel a Graph Service-hez a hatókörrel, csak a következő kódra van szüksége a végpont eléréséhez:

//CallGraphServlet.java
User user = GraphHelper.getGraphClient(contextAdapter).me().buildRequest().get();

Hatókörök

A hatókörök adják meg a Microsoft Entra ID számára azt a hozzáférési szintet, amelyet az alkalmazás igényel.

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ó hozzájárul egy vagy több hatókörhöz, és tokent kap, akkor a jóváhagyott hatókörök kódolva lesznek az így kapott -ba.

Az alkalmazás által kért hatóköröket lásd itt: authentication.properties. Alapértelmezés szerint az alkalmazás a scopes értékét értékre állítja. Ez a Microsoft Graph API-hatókör az aktuális bejelentkezett felhasználó adatainak elérésére szolgál. Az információ eléréséhez használt Graph-végpont a következő: . Az erre a végpontra küldött érvényes kérelmeknek a fejlécben tartalmazniuk kell egy értéket, amely tartalmazza a hatókört.

További információ

  • Microsoft Authentication Library (MSAL) Javához
  • Microsoft identitásplatform (Microsoft Entra ID a fejlesztőknek)
  • Gyorsútmutató: alkalmazás regisztrálása a Microsoft identitásplatformon
  • Ismerkedés a Microsoft Entra ID-alkalmazások hozzájárulási felhasználói élményeivel
  • A felhasználói és rendszergazdai hozzájárulás megértése
  • MSAL mintakódok

Következő lépés

Java WebLogic-alkalmazások üzembe helyezése Azure-beli virtuális gépeken futó WebLogicba