Bejelentkezés engedélyezése Java WebSphere-alkalmazásokhoz az MSAL4J és az Azure Active Directory B2C használatával

Ez a cikk egy Java Servlet-alkalmazást mutat be, amely a Microsoft hitelesítési kódtár Javához (MSAL4J) használatával hitelesíti a felhasználókat az Azure Active Directory B2C-vel (Azure AD B2C) szemben.

Megjegyzés

2025. május 1-étől Azure Active Directory B2C már nem vásárolható meg új ügyfelek számára. A meglévő ügyfelek továbbra is használhatják az Azure AD B2C-t, és legalább 2030 májusáig támogatást kapnak. Az új ügyfélidentitás- és hozzáférés-kezelési (CIAM-) projektekhez használja inkább a Microsoft Entra Külső ID.

Az alábbi ábrán az alkalmazás topológiája látható:

Az alkalmazás topológiáját bemutató diagram.

Az alkalmazás az MSAL4J használatával bejelentkezteti a felhasználókat, és egy ID token szerez az Azure AD B2C-ből. Az azonosító token igazolja, hogy a felhasználót egy Azure AD B2C-bérlő hitelesítette.

Előfeltételek

  • JDK 8-as vagy újabb verzió
  • Maven 3
  • Egy Azure AD B2C-bérlő. További információért lásd: Oktatóanyag: Azure Active Directory B2C-bérlő létrehozása
  • Egy felhasználói fiók az Azure AD B2C-bérlőben.
  • WebSphere
  • 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/1-Authentication/sign-in-b2c

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.

Regisztrálja a mintaalkalmazást az Azure AD B2C-bérlőjében

A minta egy előre regisztrált alkalmazással rendelkezik tesztelési célokra. Ha saját Azure AD B2C-bérlőt és -alkalmazást szeretne használni, kövesse az alábbi szakaszokban leírt lépéseket az alkalmazás Azure Portalon való regisztrálásához és konfigurálásához. Ellenkező esetben folytassa a minta futtatása lépéseivel.

Válassza ki azt az Azure AD B2C-bérlőt, ahol az alkalmazásokat létre szeretné hozni

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 Azure AD B2C-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 Azure AD B2C-bérlőre való módosításához.

Felhasználói folyamatok és egyéni szabályzatok létrehozása

Ha olyan gyakori felhasználói folyamatokat szeretne létrehozni, mint a regisztráció, a bejelentkezés, a profil szerkesztése és a jelszó alaphelyzetbe állítása, tekintse meg a következő oktatóanyagot: Felhasználói folyamatok létrehozása az Azure Active Directory B2C-ben.

Érdemes megfontolnia az egyéni szabályzatok létrehozását az Azure Active Directory B2C-ben is, ez azonban túlmutat ezen oktatóanyag keretein.

Külső identitásszolgáltatók hozzáadása

Lásd: Oktatóanyag: Identitásszolgáltatók hozzáadása az alkalmazásaihoz az Azure Active Directory B2C-ben.

Az alkalmazás regisztrálása (ms-identity-b2c-java-servlet-webapp-authentication)

Az alkalmazás regisztrálásához kövesse az alábbi lépéseket:

  1. Lépjen az Azure Portalra , és válassza az Azure AD B2C-t.

  2. Válassza az Alkalmazásregisztrációk lehetőséget a navigációs panelen, majd válassza az Új regisztráció lehetőséget.

  3. 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 beszédes alkalmazásnevet, amely az alkalmazás felhasználói számára jelenik meg – például: .
    • A Támogatott fióktípusok területen válassza a Fiókok lehetőséget bármely szervezeti címtárban és személyes Microsoft-fiókban (pl. Skype, Xbox, Outlook.com).
    • A Átirányítási URI (nem kötelező) szakaszban válassza a Web lehetőséget a legördülő 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.

Konfigurálja úgy az alkalmazást (ms-identity-b2c-java-servlet-webapp-authentication), hogy az az alkalmazásregisztrációját használja.

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 tulajdonságot, és cserélje le a meglévő értéket az Azure Portalon található alkalmazás alkalmazásazonosítójára vagy értékére.

  4. Keresse meg a tulajdonságot, és cserélje le a meglévő értéket arra az értékre, amelyet a alkalmazás Azure Portalon történő létrehozása során mentett el.

  5. Keresse meg a tulajdonságot, és cserélje le a meglévő alkalmazás clientId-értékét az ebben a szakaszban szereplő 1. lépésben a elembe beírt értékre.

  6. Keresse meg a tulajdonságot, és cserélje le a első előfordulását annak az Azure AD B2C-bérlőnek a nevére, amelyben a alkalmazást az Azure Portalon hozta létre.

  7. Keresse meg a tulajdonságot, és cserélje le a második előfordulását annak az Azure AD B2C-bérlőnek a nevével, amelyben a alkalmazást létrehozta az Azure Portalban.

  8. Keresse meg a tulajdonságot, és cserélje le annak a regisztrációs/bejelentkezési felhasználói folyamat szabályzatnak a nevére, amelyet abban az Azure AD B2C-bérlőben hozott létre, ahol az Azure Portalban létrehozta a alkalmazást.

  9. Keresse meg a tulajdonságot, és cserélje le annak értékét annak a jelszó-visszaállítási felhasználói folyamat szabályzatnak a nevére, amelyet abban az Azure AD B2C-bérlőben hozott létre, ahol az Azure Portalon létrehozta a alkalmazást.

  10. Keresse meg a tulajdonságot, és cserélje le annak értékét annak a szerkesztési profilhoz tartozó felhasználói folyamat-szabályzatnak a nevére, amelyet abban az Azure AD B2C-bérlőben hozott létre, amelyben az Azure Portalban létrehozta a alkalmazást.

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

Ezek az utasítások feltételezik, hogy telepítette a WebSphere-et, és beállított egy kiszolgálót. A kiszolgáló alapvető beállításához használhatja a WebSphere Application Server (hagyományos) fürt üzembe helyezése Azure-beli virtuális gépeken című útmutatót.

Mielőtt üzembe helyezhető a WebSphere-ben, 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. Nyissa meg az alkalmazás authentication.properties fájlját, és módosítsa a értékét a használni kívánt kiszolgáló URL-címére és portszámára, az alábbi példában látható módon:

    # 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://<server-url>:<port-number>/msal4j-servlet-auth/
    
  2. A fájl mentése után használja az alábbi parancsot az alkalmazás újraépítéséhez:

    mvn clean package
    
  3. Miután a kód elkészült, másolja át a .war fájlt a célkiszolgáló fájlrendszerére.

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.

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

  2. A keresőmezővel keressen rá az alkalmazásregisztrációjára – például: .

  3. Nyissa meg az alkalmazásregisztrációt a nevének kiválasztásával.

  4. Válassza a Hitelesítés lehetőséget a menüben.

  5. A Webátirányítási URI-k szakaszban válassza az URI hozzáadása lehetőséget.

  6. Adja meg az alkalmazás URI-ját, és fűzze hozzá a /auth/redirect végződést – például: .

  7. Válassza a Mentés lehetőséget.

A minta üzembe helyezéséhez kövesse az alábbi lépéseket a WebSphere integrált megoldáskonzoljával:

  1. Az Alkalmazások lapon válassza az Új alkalmazás, majd az Új vállalati alkalmazás lehetőséget.

  2. Válassza ki az elkészített .war fájlt, majd válassza a Tovább lehetőséget mindaddig, amíg el nem jut a Map context roots for Web modules telepítési lépéshez. A többi alapértelmezett beállításnak megfelelőnek kell lennie.

  3. A kontextusgyökérnél ugyanazt az értéket állítsa be, mint amely a mintakonfigurációban vagy az Azure-alkalmazás regisztrációjában megadott „Redirect URI”-ban a portszám után szerepel. Vagyis ha az átirányítási URI , akkor a kontextusgyökérnek értékűnek kell lennie.

  4. Válassza a Befejezés lehetőséget.

  5. Miután az alkalmazás telepítése befejeződött, lépjen az Alkalmazások lap WebSphere vállalati alkalmazások szakaszára.

  6. Válassza ki a telepített .war fájlt az alkalmazások listájából, majd válassza a Telepítés indítása lehetőséget.

  7. Az üzembe helyezés befejezése után navigáljon ide: , és látnia kell 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 a kiválasztott identitásszolgáltató fiókjával.
  4. Figyelje meg, hogy a környezetfüggő gombon most ez áll: Kijelentkezés, és megjelenik rajta a felhasználóneve.
  5. Válassza az Azonosító jogkivonat részletei lehetőséget az azonosító jogkivonat egyes dekódolt jogcímeinek megtekintéséhez.
  6. Lehetősége van a profil szerkesztésére is. A hivatkozásra kattintva szerkesztheti az olyan részleteket, mint a megjelenített név, a lakóhely és a foglalkozás.
  7. A kijelentkezéshez használja a sarokban lévő gombot.
  8. Kijelentkezés után a token részleteit tartalmazó oldal eléréséhez keresse fel a következő URL-t: . Itt láthatja, hogy az alkalmazás a(z) hibát jeleníti meg az ID-jogkivonat állításai helyett.

Tudnivalók a kódról

Ez a minta bemutatja, hogyan használhatja az MSAL4J-t a felhasználók Azure AD B2C-bérlőbe való bejelentkezésére.

Tartalom

Az alábbi táblázat a mintaprojekt mappájának tartalmát mutatja be:

Fájl/mappa Leírás
AuthHelper.java Segédfüggvények a hitelesítéshez.
Config.java Indításkor fut, és konfigurálja a tulajdonságolvasót és a naplózót.
authentication.properties Microsoft Entra-azonosító és programkonfiguráció.
AuthenticationFilter.java A nem hitelesített kéréseket átirányítja a védett erőforrásokra egy 401-es lapra.
MsalAuthSession Egy használatával példányosítva. Az MSAL-hez kapcsolódó munkamenet-attribútumokat a munkamenet attribútumban tárolja.
*Servlet.java Az összes elérhető végpont java osztályokban van definiálva, amelyek neve Servlet.végződik.
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 létrehozni az Azure AD B2C engedélyezési URL-címét, és segít a hitelesítési jogkivonat cseréjében egy hozzáférési jogkivonathoz.

IClientSecret secret = ClientCredentialFactory.createFromSecret(SECRET);
confClientInstance = ConfidentialClientApplication
                     .builder(CLIENT_ID, secret)
                     .b2cAuthority(AUTHORITY + policy)
                     .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.
  • Az Azure AD B2C hitelesítési szolgáltató a regisztrációhoz, bejelentkezéshez, profilszerkesztéshez vagy jelszó-visszaállításhoz megfelelő elemmel összefűzve.

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 kérést küld az Azure Active Directory B2C-bérlője végpontjára. Az MSAL4J példány egy engedélykérési URL létrehozására szolgál, és az alkalmazás átirányítja a böngészőt erre az URL-re, ahogy az alábbi példában látható:

    final ConfidentialClientApplication client = getConfidentialClientInstance(policy);
    final AuthorizationRequestUrlParameters parameters = AuthorizationRequestUrlParameters
        .builder(REDIRECT_URI, Collections.singleton(SCOPES)).responseMode(ResponseMode.QUERY)
        .prompt(Prompt.SELECT_ACCOUNT).state(state).nonce(nonce).build();
    
    final String redirectUrl = client.getAuthorizationRequestUrl(parameters).toString();
    Config.logger.log(Level.INFO, "Redirecting user to {0}", redirectUrl);
    resp.setStatus(302);
    resp.sendRedirect(redirectUrl);
    

    Az alábbi lista a kód funkcióit ismerteti:

    • : Az AuthorizationRequestUrl felépítéséhez beállítandó paraméterek.

    • : Az a hely, ahová az Azure AD B2C átirányítja a böngészőt — a hitelesítési kóddal együtt —, miután összegyűjtötte a felhasználó hitelesítő adatait.

    • : Hatókörök az alkalmazás által kért engedélyek.

      Általában a három hatókör elegendő lenne egy azonosítótoken-válasz fogadásához. Az MSAL4J azonban megköveteli, hogy az Azure AD B2C minden válasza tartalmazzon hozzáférési jogkivonatot is.

      Ahhoz, hogy az Azure AD B2C kiadhasson egy hozzáférési jogkivonatot és egy azonosító jogkivonatot, a kérésnek tartalmaznia kell egy további erőforrás-hatókört. Mivel ez az alkalmazás valójában nem igényel külső erőforrás-hatókört, negyedik hatókörként hozzáadja a saját ügyfél-azonosítóját a hozzáférési jogkivonat fogadásához.

      Az alkalmazás által kért hatókörök teljes listáját a authentication.properties fájlban találja.

    • : Az Azure AD B2C a választ egy HTTP POST-kérelemben űrlapparaméterekként, vagy egy HTTP GET-kérelemben lekérdezési sztring paramétereiként adhatja vissza.

    • : Az Azure AD B2C-nek meg kell kérnie a felhasználót, hogy válassza ki azt a fiókot, amellyel hitelesíteni szeretne.

    • : Egy egyedi változó, amelyet az alkalmazás minden egyes jogkivonat-kéréskor a munkamenetben állít be, és amelyet a megfelelő Azure AD B2C átirányítási visszahívás kézhezvétele után töröl. Az állapotváltozó biztosítja, hogy a(z) felé irányuló Azure AD B2C-kérések valóban az ebből az alkalmazásból és ebből a munkamenetből indított Azure AD B2C-engedélyezési kérelmekből erednek, ezáltal megakadályozva a CSRF-támadásokat. Ez a AADRedirectServlet.java fájlban történik.

    • : Egy egyedi változó, amelyet az alkalmazás minden tokenkéréskor beállít a munkamenetben, majd a megfelelő token beérkezése után töröl. Ez a nonce bekerül az Azure AD B2C által kiadott eredményül kapott jogkivonatokba, így biztosítva, hogy ne történhessen jogkivonat-visszajátszási támadás.

  2. Az Azure Active Directory B2C egy bejelentkezési kérést jelenít meg a felhasználónak. 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 egy hitelesítési kódot tartalmaz.

  3. A példány ezután beváltja ezt az engedélyezési kódot egy ID-jogkivonatra és egy hozzáférési jogkivonatra az Azure Active Directory B2C-től, ahogy az alábbi példa mutatja:

    final AuthorizationCodeParameters authParams = AuthorizationCodeParameters
                        .builder(authCode, new URI(REDIRECT_URI))
                        .scopes(Collections.singleton(SCOPES)).build();
    
    final ConfidentialClientApplication client = AuthHelper
            .getConfidentialClientInstance(policy);
    final Future<IAuthenticationResult> future = client.acquireToken(authParams);
    final IAuthenticationResult result = future.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, és ellenőrzi, hogy a nonce jogcím megegyezik-e a munkamenetben tárolt nonce értékkel, ahogy az az alábbi példában látható:

    parseJWTClaimsSetAndStoreResultInSession(msalAuth, result, serializedTokenCache);
    validateNonce(msalAuth)
    processSuccessfulAuthentication(msalAuth);
    
  5. Ha a nonce ellenőrzése sikeresen megtörténik, a hitelesítési állapotot egy kiszolgálóoldali munkamenetben tárolják a(z) osztály által elérhetővé tett metódusok használatával, amint az az alábbi példában látható:

    msalAuth.setAuthenticated(true);
    msalAuth.setUsername(msalAuth.getIdTokenClaims().get("name"));
    

További információ

  • Mi az az Azure Active Directory B2C?
  • Az Active Directory B2C-ben használható alkalmazástípusok
  • Az Azure Active Directory B2C ajánlásai és bevált gyakorlatai
  • Azure AD B2C-munkamenet
  • Microsoft Authentication Library (MSAL) Javához

Az OAuth 2.0 protokollok ebben és más forgatókönyvekben való működésével kapcsolatos további információkért lásd: A Microsoft Entra ID hitelesítési forgatókönyvei.

Következő lépés

Java WebSphere-alkalmazások üzembe helyezése hagyományos WebSphere-környezetbe Azure-beli virtuális gépeken