Povolení přihlašování pro aplikace WebSphere v Javě pomocí ID Microsoft Entra

Tato ukázka předvádí aplikaci WebSphere v jazyce Java, která přihlašuje uživatele do vašeho tenanta Microsoft Entra ID pomocí knihovny Identity a ověřování Microsoftu (MSAL) pro Javu.

Následující diagram znázorňuje topologii aplikace:

Diagram znázorňující topologii aplikace.

Klientská aplikace používá MSAL pro Javu (MSAL4J) k přihlašování uživatelů do vlastního tenantu Microsoft Entra ID a k získání tokenu ID od Microsoft Entra ID. ID token potvrzuje, že uživatel je ověřen v rámci tohoto tenanta. Aplikace chrání své trasy podle stavu ověřování uživatele.

Požadavky

  • JDK verze 8 nebo vyšší
  • Maven 3
  • Tenant služby Microsoft Entra ID. Další informace najdete v článku Jak získat tenant Microsoft Entra ID.
  • Uživatelský účet ve vlastním tenantovi Microsoft Entra ID, pokud chcete pracovat pouze s účty v adresáři vaší organizace – tedy v režimu jednoho tenanta (single-tenant). Pokud jste v tenantovi Microsoft Entra ID nevytvořili uživatelský účet, měli byste to udělat, než budete pokračovat. Další informace najdete v článku Jak vytvořit, pozvat a odstranit uživatele.
  • Uživatelský účet v tenantovi Microsoft Entra ID některé organizace, pokud chcete pracovat s účty v adresáři libovolné organizace – tedy v režimu více tenantů. Tuto ukázku musíte upravit, aby fungovala s osobním účtem Microsoft. Pokud jste ještě ve svém tenantovi Microsoft Entra ID nevytvořili uživatelský účet, měli byste to udělat předtím, než budete pokračovat. Další informace najdete v článku Jak vytvořit, pozvat a odstranit uživatele.
  • Osobní účet Microsoft – například Xbox, Hotmail, Live atd., pokud chcete pracovat s osobními účty Microsoft.
  • 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

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.

Zaregistrujte ukázkovou aplikaci ve vašem tenantovi Microsoft Entra ID

V této ukázce je jeden projekt. V této části se dozvíte, jak aplikaci zaregistrovat.

Nejprve zaregistrujte aplikaci v portálu Azure podle pokynů v Rychlý start: Registrace aplikace na platformě Microsoft identity.

Potom pomocí následujících kroků dokončete registraci:

  1. Přejděte na stránku Registrace aplikací na webu Microsoft Identity Platform pro vývojáře.

  2. Vyberte Nová registrace.

  3. 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 jednu z následujících možností:

      • Vyberte Pouze účty v tomto organizačním adresáři, pokud vytváříte aplikaci jen pro uživatele ve vašem tenantu – tedy jednotenantní aplikaci.
      • Vyberte Účty v libovolném organizačním adresáři, pokud chcete, aby uživatelé v libovolném tenantu Microsoft Entra ID mohli používat vaši aplikaci – tedy vícetenantní aplikaci.
      • Vyberte Účty v libovolném organizačním adresáři a osobní účty Microsoft pro nejširší okruh zákazníků – tedy víceklientskou aplikaci, která podporuje také osobní účty Microsoft.
      • Vyberte osobní účty Microsoft, které budou používat jenom uživatelé osobních účtů Microsoft – například účty Hotmail, Live, Skype a Xbox.
    • V části Identifikátor URI pro přesměrování vyberte v rozevíracím seznamu možnost Web a zadejte následující identifikátor URI pro přesměrování: .

  4. Výběrem možnosti Registrovat aplikaci vytvořte.

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

  6. Na registrační stránce aplikace vyberte v navigačním podokně certifikáty a tajné kódy a otevřete stránku pro generování tajných kódů a nahrání certifikátů.

  7. V části Tajné klíče klienta vyberte Nový tajný klíč klienta.

  8. Zadejte popis – například tajný kód aplikace.

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

  10. Vyberte Přidat. Zobrazí se vygenerovaná hodnota.

  11. 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 tak, aby používala vaši registraci aplikace.

Ke konfiguraci aplikace použijte následující postup:

Poznámka:

V následujících krocích je stejné jako nebo .

  1. Otevřete projekt v integrovaném vývojovém prostředí (IDE).

  2. Otevřete soubor ./src/main/resources/authentication.properties.

  3. Vyhledejte řetězec . Nahraďte existující hodnotu jednou z následujících hodnot:

    • ID vašeho tenanta Microsoft Entra ID, pokud jste aplikaci zaregistrovali pomocí možnosti Účty pouze v tomto organizačním adresáři.
    • Slovo , pokud jste aplikaci zaregistrovali pomocí možnosti Účty v libovolném organizačním adresáři.
    • Slovo , pokud jste aplikaci zaregistrovali pomocí možnosti Účty v libovolném organizačním adresáři a osobní účty Microsoft.
    • Slovo , pokud jste aplikaci zaregistrovali pomocí možnosti osobní účty Microsoft.
  4. Vyhledejte řetězec a nahraďte stávající hodnotu ID aplikace nebo aplikace , zkopírovanými z portálu Azure.

  5. Najděte řetězec a nahraďte stávající hodnotu hodnotou, kterou jste si uložili při vytváření aplikace na portálu Azure.

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:

  1. Přejděte k souboru authentication.properties vaší aplikace a změňte hodnotu na adresu URL svého serveru a číslo portu, které plánujete 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/
    
  2. Po uložení tohoto souboru pomocí následujícího příkazu znovu sestavte aplikaci:

    mvn clean package
    
  3. Po 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í.

  1. Přejděte na stránku Registrace aplikací na webu Microsoft Identity Platform pro vývojáře.

  2. Použijte vyhledávací pole k vyhledání registrace vaší aplikace – například .

  3. Výběrem jejího názvu otevřete registraci aplikace.

  4. Vyberte Ověřování z nabídky.

  5. V části WebIdentifikátory URI pro přesměrování vyberte možnost Přidat identifikátor URI.

  6. Zadejte identifikátor URI své aplikace a připojte /auth/redirect – například .

  7. Zvolte Uložit.

Pomocí následujících kroků nasaďte ukázku pomocí konzoly integrovaných řešení WebSphere:

  1. Na kartě Aplikace vyberte Nová aplikace a pak Nová podniková aplikace.

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

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

  4. Vyberte Dokončit.

  5. Po dokončení instalace aplikace přejděte do části Podnikové aplikace WebSphere na kartě Aplikace.

  6. V seznamu aplikací vyberte soubor .war, který jste nainstalovali, a pak vyberte Spustit a nasaďte.

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

  1. Všimněte si stavu přihlášení nebo odhlášení, který se zobrazuje uprostřed obrazovky.
  2. 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.
  3. Na další stránce postupujte podle pokynů a přihlaste se pomocí účtu v tenantovi Microsoft Entra ID.
  4. Na obrazovce souhlasu si všimněte požadovaných oborů.
  5. Všimněte si, že kontextové tlačítko nyní zobrazuje Odhlásit se a vaše uživatelské jméno.
  6. Vyberte Podrobnosti tokenu ID, chcete-li zobrazit některé dekódované deklarované údaje tokenu ID.
  7. Pomocí tlačítka v rohu se odhlaste.
  8. Po odhlášení vyberte možnost ID Token Details a ověřte, že aplikace zobrazí chybu místo claimů tokenu ID, když uživatel není autorizován.

O kódu

Tato ukázka ukazuje, jak pomocí knihovny MSAL pro Javu (MSAL4J) přihlásit uživatele do vašeho tenanta Microsoft Entra ID. Pokud chcete použít MSAL4J ve vlastních aplikacích, musíte ho přidat do svých projektů pomocí Mavenu.

Pokud chcete napodobit chování této ukázky, můžete zkopírovat soubor pom.xml a obsah složek helpers a authservlets ve složce src/main/java/com/microsoft/azuresamples/msal4j. Také potřebujete soubor authentication.properties. Tyto třídy a soubory obsahují obecný kód, který můžete použít v široké škále aplikací. Zbývající část ukázky můžete také zkopírovat, ale ostatní třídy a soubory jsou vytvořené speciálně tak, aby řešily cíl této ukázky.

Obsah

Následující tabulka ukazuje obsah složky ukázkového projektu:

Soubor nebo složka Popis
src/main/java/com/microsoft/azuresamples/msal4j/authwebapp/ Tento adresář obsahuje třídy definující back-endovou obchodní logiku aplikace.
src/main/java/com/microsoft/azuresamples/msal4j/authservlets/ Tento adresář obsahuje třídy, které se používají k přihlášení a odhlášení koncových bodů.
*Servlet.java Všechny dostupné koncové body jsou definovány ve třídách Javy s názvy končícími Servlet.
src/main/java/com/microsoft/azuresamples/msal4j/helpers/ Pomocné třídy pro autentizaci.
AuthenticationFilter.java Přesměruje neověřené požadavky na chráněné koncové body na stránku 401.
src/main/resources/authentication.properties Microsoft Entra ID a konfigurace programu.
src/main/webapp/ Tento adresář obsahuje uživatelské rozhraní – šablony JSP.
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 microsoft Entra ID a také pomáhá vyměnit ověřovací token pro přístupový token.

// getConfidentialClientInstance method
IClientSecret secret = ClientCredentialFactory.createFromSecret(SECRET);
confClientInstance = ConfidentialClientApplication
                     .builder(CLIENT_ID, secret)
                     .authority(AUTHORITY)
                     .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 Microsoft Entra ID, která zahrnuje ID vašeho tenanta Microsoft Entra ID.

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:

  1. Prvním krokem procesu přihlašování je odeslání požadavku na koncový bod pro vašeho tenanta Microsoft Entra ID. Instance MSAL4J se používá k vytvoření adresy URL žádosti o autorizaci. Aplikace přesměruje prohlížeč na tuto adresu URL, což je místo, kde se uživatel přihlásí.

    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);
    

    Následující seznam popisuje funkce tohoto kódu:

    • : Parametry, které musí být nastaveny k sestavení AuthorizationRequestUrl.

    • : Adresa, na kterou Microsoft Entra ID po zadání přihlašovacích údajů uživatelem přesměruje prohlížeč spolu s autorizačním kódem. Musí odpovídat identifikátoru URI pro přesměrování v registraci aplikace Microsoft Entra ID v Azure portal.

    • : Rozsahy jsou oprávnění, o která aplikace žádá. Obvykle tři rozsahy postačují k získání odpovědi obsahující token ID.

      Úplný seznam rozsahů, které aplikace požaduje, najdete v souboru authentication.properties. Můžete přidat další oprávnění, například .

  2. Uživateli se zobrazí výzva k přihlášení pomocí ID Microsoft Entra. 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.

  3. Tato instance pak vymění tento autorizační kód za token ID a přístupový token od Microsoft Entra ID.

    // 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();
    

    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.
  4. Pokud je operace úspěšná, extrahují se atributy tokenu. Pokud kontrola nonce proběhne úspěšně, výsledky se umístí do , instance , a uloží do relace. Aplikace pak může z relace prostřednictvím instance vytvořit instanci , kdykoli k ní potřebuje přístup, jak ukazuje následující kód:

    // 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());
    

Ochrana tras

Informace o tom, jak ukázková aplikace filtruje přístup k trasám, najdete v tématu AuthenticationFilter.java. V souboru authentication.properties obsahuje vlastnost čárkami oddělené trasy, ke kterým mají přístup pouze ověření uživatelé, jak ukazuje následující příklad:

# for example, /token_details requires any user to be signed in and does not require special roles claim(s)
app.protect.authenticated=/token_details

Oblasti

Obory oprávnění určují v Microsoft Entra ID úroveň přístupu, o kterou aplikace žádá.

V závislosti na požadovaných oborech zobrazí ID Microsoft Entra dialog pro vyjádření souhlasu uživateli při přihlášení. Pokud uživatel udělí souhlas s jednou nebo více oblastmi oprávnění a získá token, oblasti oprávnění, s nimiž byl udělen souhlas, jsou zakódovány do výsledného .

Požadovaná oprávnění aplikace najdete v souboru authentication.properties. Tyto tři rozsahy oprávnění jsou ve výchozím nastavení požadovány knihovnou MSAL a udělovány službou Microsoft Entra ID.

Více informací

  • Identity a ověřování Microsoftu (MSAL) pro jazyk Java
  • Referenční dokumentace k MSAL pro Javu
  • Microsoft identity platform (Microsoft Entra ID pro vývojáře)
  • Rychlý start: Registrace aplikace na platformě Microsoft Identity
  • Vysvětlení možností udělení souhlasu aplikacím v Microsoft Entra ID
  • Princip fungování souhlasu uživatele a správce
  • Ukázky kódu MSAL

Další krok

Nasazení aplikací Java WebSphere do tradičního prostředí WebSphere na virtuálních počítačích Azure