Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek představuje aplikaci Java Servletu, která ověřuje uživatele pomocí služby Azure Active Directory B2C (Azure AD B2C) s využitím knihovny Microsoft Authentication Library pro Javu (MSAL4J).
Poznámka:
Od 1. května 2025 už není Azure Active Directory B2C k dispozici k nákupu pro nové zákazníky. Stávající zákazníci můžou dál používat Azure AD B2C s podporou poskytovanou alespoň do května 2030. Pro nové projekty správy identit zákazníků a přístupu (CIAM) použijte místo toho Microsoft Entra Externí ID.
Následující diagram znázorňuje topologii aplikace:
Diagram znázorňující topologii aplikace.
Aplikace používá MSAL4J k přihlášení uživatelů a získání tokenu ID z Azure AD B2C. Token ID prokáže, že je uživatel ověřený vůči tenantovi Azure AD B2C.
Požadavky
- JDK verze 8 nebo vyšší
- Maven 3
- Tenant služby Azure AD B2C. Další informace najdete v tématu Kurz: Vytvořit tenanta Azure Active Directory B2C
- Uživatelský účet ve vašem tenantovi Azure AD B2C.
- WebSphere
- Visual Studio Code
- Azure Tools for Visual Studio Code
Doporučení
- Určitá znalost Javy / Jakarta Servlets.
- Znalost terminálu Linux/OSX
- jwt.ms pro kontrolu vašich tokenů.
- Fiddler pro monitorování vaší síťové aktivity a odstraňování problémů.
- Sledujte blog Microsoft Entra , abyste zůstali up-to-datem s nejnovějším vývojem.
Nastavení ukázky
Následující části ukazují, jak nastavit ukázkovou aplikaci.
Klonování nebo stažení ukázkového úložiště
Pokud chcete ukázku naklonovat, otevřete okno Bash a použijte následující příkaz:
git clone https://github.com/Azure-Samples/ms-identity-msal-java-samples.git
cd 3-java-servlet-web-app/1-Authentication/sign-in-b2c
Případně přejděte do repozitáře ms-identity-msal-java-samples, potom jej stáhněte jako soubor .zip a rozbalte ho na pevný disk.
Důležité
Abyste se vyhnuli omezením délky cesty k souboru ve Windows, naklonujte nebo extrahujte úložiště do adresáře poblíž kořenového adresáře pevného disku.
Registrace ukázkové aplikace v tenantovi Azure AD B2C
Vzor se dodává s předregistrovanou aplikací pro testovací účely. Pokud chcete použít vlastního tenanta a aplikaci Azure AD B2C, postupujte podle kroků v následujících částech a zaregistrujte a nakonfigurujte aplikaci na webu Azure Portal. V opačném případě pokračujte podle kroků pro Spuštění ukázky.
Zvolte tenanta Azure AD B2C, ve kterém chcete vytvářet aplikace.
Pokud chcete zvolit tenanta, postupujte následovně:
Přihlaste se k portálu Azure.
Pokud se váš účet nachází ve více než jednom klientovi Azure AD B2C, vyberte svůj profil v rohu portálu Azure a potom výběrem možnosti Switch directory změňte relaci na požadovaného klienta Azure AD B2C.
Vytvořit toky uživatelů a vlastní zásady
Chcete-li vytvořit běžné uživatelské toky, jako je registrace, přihlášení, úprava profilu a obnovení hesla, přečtěte si Kurz: Vytvoření uživatelských toků ve službě Azure Active Directory B2C.
Měli byste zvážit i vytvoření vlastních zásad v Azure Active Directory B2C, to však přesahuje rámec tohoto kurzu.
Přidat externí poskytovatele identity
Viz Kurz: Přidání poskytovatelů identity do vašich aplikací v Azure Active Directory B2C.
Registrace aplikace (ms-identity-b2c-java-servlet-webapp-authentication)
Aplikaci zaregistrujete pomocí následujících kroků:
Přejděte na portál Azure a vyberte Azure AD B2C.
V navigačním podokně vyberte Registrace aplikací a pak vyberte Nová registrace.
Na zobrazené stránce Zaregistrovat aplikaci zadejte následující informace pro registraci aplikace:
- V části Název zadejte smysluplný název aplikace, který se bude zobrazovat uživatelům aplikace – například .
- V části Podporované typy účtů vyberte Účty v libovolném adresáři organizace a osobních účtech Microsoft (např. Skype, Xbox, Outlook.com).
- V části Identifikátor URI pro přesměrování (volitelné) vyberte v rozevíracím seznamu Web a zadejte následující identifikátor URI pro přesměrování: .
Výběrem možnosti Registrovat aplikaci vytvořte.
Na stránce registrace aplikace vyhledejte a zkopírujte hodnotu ID aplikace (klienta), kterou chcete použít později. Tuto hodnotu použijete v konfiguračním souboru nebo souborech vaší aplikace.
Výběrem možnosti Uložit uložte změny.
Na registrační stránce aplikace vyberte v navigačním podokně certifikáty a tajné kódy a otevřete stránku, kde můžete vygenerovat tajné kódy a nahrát certifikáty.
V části Tajné klíče klienta vyberte Nový tajný klíč klienta.
Zadejte popis – například tajný kód aplikace.
Vyberte vypršení platnosti tajného kódu nebo zadejte vlastní životnost. Tajné kódy klientů jsou omezené na maximální životnost 24 měsíců a Microsoft doporučuje vypršení platnosti kratší než 12 měsíců. U produkčních aplikací upřednostňujete přihlašovací údaje certifikátu nebo federované identity před tajným klíčem klienta.
Vyberte Přidat. Zobrazí se vygenerovaná hodnota.
Zkopírujte a uložte vygenerovanou hodnotu pro použití v dalších krocích. Tuto hodnotu potřebujete pro konfigurační soubory kódu. Tato hodnota se znovu nezobrazí a nemůžete ji načíst žádným jiným způsobem. Před přechodem na jinou obrazovku nebo podokno si ho proto nezapomeňte uložit z webu Azure Portal.
Nakonfigurujte aplikaci (ms-identity-b2c-java-servlet-webapp-authentication) tak, aby používala registraci vaší aplikace
Ke konfiguraci aplikace použijte následující postup:
Poznámka:
V následujících krocích je stejné jako nebo .
Otevřete projekt v integrovaném vývojovém prostředí (IDE).
Otevřete soubor ./src/main/resources/authentication.properties.
Najděte vlastnost a nahraďte stávající hodnotu ID aplikace nebo aplikace z portálu Azure.
Najděte vlastnost a nahraďte její stávající hodnotu hodnotou, kterou jste si uložili při vytváření aplikace v portálu Azure.
Vyhledejte vlastnost a nahraďte stávající clientId aplikace hodnotou, kterou jste v kroku 1 této části vložili do .
Najděte vlastnost a nahraďte první výskyt názvem tenanta Azure AD B2C, ve kterém jste v portálu Azure vytvořili aplikaci .
Najděte vlastnost
aad.authoritya nahraďte druhý výskytfabrikamb2cnázvem tenanta Azure AD B2C, ve kterém jste v portálu Azure vytvořili aplikacims-identity-b2c-java-servlet-webapp-authentication.Najděte vlastnost a nahraďte ji názvem zásady toku uživatele pro registraci/přihlášení, kterou jste vytvořili v tenantovi Azure AD B2C, ve kterém jste v portálu Azure vytvořili aplikaci .
Najděte vlastnost aad.passwordResetPolicy a nahraďte ji názvem zásady toku uživatele pro resetování hesla, který jste vytvořili v tenantu Azure AD B2C, ve kterém jste v Azure Portalu vytvořili aplikaci ms-identity-b2c-java-servlet-webapp-authentication.
Najděte vlastnost a nahraďte ji názvem zásady toku uživatele pro úpravu profilu, kterou jste vytvořili v tenantovi Azure AD B2C, ve kterém jste na portálu Azure vytvořili aplikaci .
Sestavte ukázku
Pokud chcete vytvořit ukázku pomocí Mavenu, přejděte do adresáře obsahujícího soubor pom.xml ukázky a spusťte následující příkaz:
mvn clean package
Tento příkaz vygeneruje soubor .war , který můžete spustit na různých aplikačních serverech.
Spusťte ukázku
Tyto pokyny předpokládají, že jste nainstalovali WebSphere a nastavili server. Můžete použít pokyny v článku Nasazení clusteru WebSphere Application Server (tradičního) na Azure Virtual Machines pro základní konfiguraci serveru.
Před nasazením do WebSphere proveďte některé změny konfigurace v samotné ukázce pomocí následujících kroků a pak sestavte nebo znovu sestavte balíček:
Přejděte do souboru authentication.properties vaší aplikace a změňte hodnotu na adresu URL svého serveru a číslo portu, které chcete použít, jak ukazuje následující příklad:
# 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/Po uložení tohoto souboru pomocí následujícího příkazu znovu sestavte aplikaci:
mvn clean packagePo dokončení sestavování kódu zkopírujte soubor .war do systému souborů cílového serveru.
Musíte také provést stejnou změnu v registraci aplikace Azure, kde ji v portálu Azure nastavíte jako hodnotu identifikátoru URI pro přesměrování na kartě Ověřování.
Přejděte na stránku Registrace aplikací na webu Microsoft Identity Platform pro vývojáře.
Použijte vyhledávací pole k vyhledání registrace vaší aplikace – například .
Výběrem jejího názvu otevřete registraci aplikace.
Vyberte Ověřování z nabídky.
V části WebIdentifikátory URI pro přesměrování vyberte možnost Přidat identifikátor URI.
Zadejte identifikátor URI své aplikace a připojte /auth/redirect – například .
Zvolte Uložit.
Pomocí následujících kroků nasaďte ukázku pomocí konzoly integrovaných řešení WebSphere:
Na kartě Aplikace vyberte Nová aplikace a pak Nová podniková aplikace.
Vyberte soubor .war, který jste vytvořili, a poté vybírejte možnost Další, dokud se nedostanete ke kroku instalace Map context roots for Web modules. Ostatní výchozí nastavení by měla být v pořádku.
U kořene kontextu jej nastavte na stejnou hodnotu, jaká následuje za číslem portu v identifikátoru „Redirect URI“, který jste nastavili v ukázkové konfiguraci / registraci aplikace Azure. To znamená, že pokud je identifikátor URI přesměrování , pak by kořenem kontextu mělo být .
Vyberte Dokončit.
Po dokončení instalace aplikace přejděte do části Podnikové aplikace WebSphere na kartě Aplikace.
V seznamu aplikací vyberte soubor .war, který jste nainstalovali, a pak vyberte Spustit a nasaďte.
Po dokončení nasazení přejděte na a měla by se zobrazit aplikace.
Prozkoumejte ukázku
Ukázku můžete prozkoumat pomocí následujících kroků:
- Všimněte si stavu přihlášení nebo odhlášení, který se zobrazuje uprostřed obrazovky.
- Vyberte tlačítko citlivé na kontext v rohu. Toto tlačítko zobrazuje při prvním spuštění aplikace text Přihlásit se.
- Na další stránce postupujte podle pokynů a přihlaste se pomocí účtu zvoleného zprostředkovatele identity.
- Všimněte si, že kontextové tlačítko nyní zobrazuje Odhlásit se a vaše uživatelské jméno.
- Vyberte Podrobnosti tokenu ID, chcete-li zobrazit některé dekódované deklarované údaje tokenu ID.
- Máte také možnost upravit svůj profil. Výběrem odkazu můžete upravit podrobnosti, jako je vaše zobrazované jméno, místo pobytu a povolání.
- Pomocí tlačítka v rohu se odhlaste.
- Po odhlášení přejděte na následující URL adresu stránky s podrobnostmi o tokenu: . Zde můžete vidět, jak aplikace zobrazuje chybu místo claimů tokenu ID.
O kódu
Tato ukázka ukazuje, jak pomocí MSAL4J přihlásit uživatele k vašemu tenantovi Azure AD B2C.
Obsah
Následující tabulka ukazuje obsah složky ukázkového projektu:
| Soubor nebo složka | Popis |
|---|---|
| AuthHelper.java | Pomocné funkce pro ověřování |
| Config.java | Spouští se při spuštění a konfiguruje čtečku vlastností a protokolovací nástroj. |
| authentication.properties | Microsoft Entra ID a konfigurace programu. |
| AuthenticationFilter.java | Přesměruje neověřené požadavky na chráněné prostředky na stránku 401. |
| MsalAuthSession | Vytvořeno pomocí . Ukládá všechny atributy relace související s MSAL do atributu relace. |
| *Servlet.java | Všechny dostupné koncové body jsou definovány ve třídách Javy s názvy končícími Servlet.. |
| CHANGELOG.md | Seznam změn v ukázce |
| CONTRIBUTING.md | Pokyny pro přispívání do ukázky |
| LICENCE | Licence pro ukázku. |
ConfidentialClientApplication
instance je vytvořena v souboru AuthHelper.java, jak ukazuje následující příklad. Tento objekt pomáhá vytvořit autorizační adresu URL Azure AD B2C a také pomáhá vyměnit ověřovací token pro přístupový token.
IClientSecret secret = ClientCredentialFactory.createFromSecret(SECRET);
confClientInstance = ConfidentialClientApplication
.builder(CLIENT_ID, secret)
.b2cAuthority(AUTHORITY + policy)
.build();
Pro vytvoření instance se používají následující parametry:
- ID klienta aplikace.
- Tajný klíč klienta, což je požadavek na důvěrné klientské aplikace.
- Autorita Azure AD B2C zřetězená s příslušným pro registraci, přihlášení, úpravu profilu nebo resetování hesla.
V této ukázce se tyto hodnoty čtou ze souboru authentication.properties pomocí čtečky vlastností v souboru Config.java .
Ukázka krok za krokem
Následující kroky poskytují návod k funkcím aplikace:
Prvním krokem procesu přihlašování je odeslání požadavku na koncový bod pro vašeho tenanta Azure Active Directory B2C. Instance knihovny MSAL4J se používá k vytvoření adresy URL autorizačního požadavku a aplikace přesměruje prohlížeč na tuto adresu URL, jak ukazuje následující příklad:
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);Následující seznam popisuje funkce tohoto kódu:
: Parametry, které musí být nastaveny k sestavení AuthorizationRequestUrl.
: Místo, kam Azure AD B2C po získání přihlašovacích údajů uživatele přesměruje prohlížeč spolu s autorizačním kódem.
: Rozsahy jsou oprávnění požadovaná aplikací.
Za běžných okolností by k získání odpovědi obsahující token ID stačily tři rozsahy . MSAL4J ale vyžaduje, aby všechny odpovědi z Azure AD B2C obsahovaly také přístupový token.
Aby Služba Azure AD B2C mohla vydávat přístupový token i token ID, musí požadavek obsahovat další obor prostředků. Protože tato aplikace ve skutečnosti nevyžaduje rozsah oprávnění pro externí zdroj, přidá své vlastní ID klienta jako čtvrtý rozsah oprávnění, aby získala přístupový token.
Úplný seznam rozsahů oprávnění, které aplikace požaduje, najdete v souboru authentication.properties.
: Azure AD B2C může vrátit odpověď jako parametry formuláře v požadavku HTTP POST nebo jako parametry dotazu v požadavku HTTP GET.
: Azure AD B2C by měl uživatele vyzvat, aby vybral účet, pomocí kterého se chce ověřit.
: Jedinečná proměnná, kterou aplikace nastaví v relaci při každé žádosti o token a která je po přijetí odpovídajícího zpětného volání přesměrování Azure AD B2C odstraněna. Stavová proměnná zajišťuje, že požadavky Azure AD B2C na skutečně pocházejí z autorizačních požadavků Azure AD B2C vycházejících z této aplikace a této relace, a tím brání útokům CSRF. To se provádí v souboru AADRedirectServlet.java .
: Jedinečná proměnná, kterou aplikace nastaví v relaci při každé žádosti o token a odstraní ji po přijetí odpovídajícího tokenu. Tato nonce se promítne do výsledných tokenů vydávaných službou Azure AD B2C, čímž se zajistí, že nedojde k útoku opakovaným použitím tokenu.
Uživateli se zobrazí výzva k přihlášení službou Azure Active Directory B2C. Pokud je pokus o přihlášení úspěšný, prohlížeč uživatele se přesměruje do koncového bodu přesměrování aplikace. Platný požadavek na tento koncový bod obsahuje autorizační kód.
Instance pak vymění tento autorizační kód za token ID a přístupový token z Azure Active Directory B2C, jak je znázorněno v následujícím příkladu:
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();Následující seznam popisuje funkce tohoto kódu:
- : Parametry, které musí být nastaveny, aby bylo možné vyměnit autorizační kód za token ID a/nebo přístupový token.
- : Autorizační kód, který byl přijat v koncovém bodu přesměrování.
- : URI přesměrování použité v předchozím kroku musí být znovu předáno.
- : Rozsahy oprávnění použité v předchozím kroku musí být znovu předány.
Pokud je úspěšné, extrahují se claimy tokenu a claim nonce se ověří vůči nonce uložené v relaci, jak ukazuje následující příklad:
parseJWTClaimsSetAndStoreResultInSession(msalAuth, result, serializedTokenCache); validateNonce(msalAuth) processSuccessfulAuthentication(msalAuth);Pokud je nonce úspěšně ověřena, stav ověření se uloží do relace na straně serveru s využitím metod zpřístupněných třídou , jak ukazuje následující příklad:
msalAuth.setAuthenticated(true); msalAuth.setUsername(msalAuth.getIdTokenClaims().get("name"));
Více informací
- Co je Azure Active Directory B2C?
- Typy aplikací, které lze použít ve službě služba Active Directory B2C
- Doporučení a osvědčené postupy pro Azure Active Directory B2C
- Relace Azure AD B2C
- Identity a ověřování Microsoftu (MSAL) pro Javu
Další informace o tom, jak protokoly OAuth 2.0 fungují v tomto a dalších scénářích, najdete v tématu Scénáře ověřování pro Microsoft Entra ID.
Další krok
Nasazení aplikací Java WebSphere do tradičního prostředí WebSphere na virtuálních počítačích Azure