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 popisuje aplikaci Java WebSphere, která umožňuje přihlášení uživatelů a získání přístupového tokenu pro volání rozhraní Microsoft Graph. Používá knihovnu Identity a ověřování Microsoftu (MSAL) pro jazyk Java.
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řihlášení uživatele a získání přístupového tokenu pro Microsoft Graph z Microsoft Entra ID. Přístupový token potvrzuje, že uživatel má oprávnění pro přístup ke koncovému bodu rozhraní Microsoft Graph API, jak je definováno v oboru.
Požadavky
- Java 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 ještě ve svém tenantovi 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.
- 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ů. Tato ukázka musí být upravena tak, aby fungovala s osobním účtem Microsoft. Pokud jste ještě ve svém tenantovi 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/2-Authorization-I/call-graph
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 následujících částech se dozvíte, jak aplikaci zaregistrovat pomocí webu Azure Portal.
Zvolte tenanta Microsoft Entra ID, ve kterém chcete vytvářet aplikace.
Pokud chcete zvolit tenanta, postupujte následovně:
Přihlaste se k portálu Azure.
Pokud je váš účet ve více než jednom tenantovi Microsoft Entra ID, vyberte svůj profil v rohu portálu Azure a potom výběrem možnosti Přepnout adresář přepněte relaci na požadovaný tenant Microsoft Entra ID.
Registrace aplikace (java-servlet-webapp-call-graph)
Nejprve zaregistrujte novou aplikaci v portálu Azure podle pokynů v článku Rychlý start: Registrace aplikace pomocí platformy Microsoft identity.
Potom pomocí následujících kroků dokončete registraci:
Přejděte na stránku Registrace aplikací na webu Microsoft Identity Platform pro vývojáře.
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 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 Redirect URI 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.
Na registrační stránce aplikace vyberte v navigačním podokně možnost oprávnění rozhraní API. Otevře se stránka, na které můžete přidat přístup k rozhraním API, která vaše aplikace potřebuje.
Vyberte Přidat oprávnění.
Ujistěte se, že je vybraná karta Rozhraní API Microsoftu.
V části Běžně používané rozhraní MICROSOFT API vyberte Microsoft Graph.
V části Delegovaná oprávnění vyberte v seznamu User.Read. V případě potřeby použijte vyhledávací pole.
Vyberte Přidat oprávnění.
Nakonfigurujte aplikaci (java-servlet-webapp-call-graph) tak, aby používala registraci 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.
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.
Vyhledejte řetězec a nahraďte stávající hodnotu ID aplikace nebo hodnotou aplikace , zkopírovanou z portálu Azure.
Najděte řetězec a nahraďte stávající hodnotu hodnotou, kterou jste uložili při vytváření aplikace v 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:
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/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 v tenantovi Microsoft Entra ID.
- Na obrazovce souhlasu si všimněte požadovaných oborů.
- 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.
- Vyberte Call Graph, aby se provedlo volání koncového bodu /me v Microsoft Graphu a zobrazily se některé získané podrobnosti o uživateli.
- Pomocí tlačítka v rohu se odhlaste.
O kódu
Tato ukázka používá MSAL pro Javu (MSAL4J) k přihlášení uživatele a získání tokenu pro rozhraní Microsoft Graph API. Používá Microsoft Graph SDK pro Javu k získání dat z Microsoft Graphu. Tyto knihovny musíte 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/callgraphwebapp/ | 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, včetně ID vašeho tenanta Microsoft Entra.
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 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, aby bylo možné sestavit .
- : Místo, kam Microsoft Entra ID přesměruje prohlížeč spolu s autorizačním kódem po zadání přihlašovacích údajů uživatelem. Musí odpovídat identifikátoru URI pro přesměrování v registraci aplikace Microsoft Entra ID v Azure portálu
- : 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ů oprávnění, které aplikace požaduje, najdete v souboru authentication.properties. Můžete přidat další oprávnění, například .
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.
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.
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 or groups claim(s)
app.protect.authenticated=/token_details, /call_graph
Graf volání
Když uživatel přejde na , aplikace vytvoří instanci ze sady Java Graph SDK a předá jí přístupový token přihlášeného uživatele. Klient Graph vkládá přístupový token do hlavičky svých požadavků. Aplikace pak požádá klienta Graph, aby zavolal koncový bod , a získal tak podrobnosti o právě přihlášeném uživateli.
Pokud už máte platný přístupový token pro službu Graph Service s oprávněním , k získání přístupu ke koncovému bodu vám stačí následující kód:
//CallGraphServlet.java
User user = GraphHelper.getGraphClient(contextAdapter).me().buildRequest().get();
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. Ve výchozím nastavení aplikace nastaví hodnotu parametru scopes na . Tento konkrétní obor rozhraní Microsoft Graph API je určený pro přístup k informacím aktuálního přihlášeného uživatele. Koncový bod Graphu pro přístup k těmto informacím je . Všechny platné požadavky odeslané na tento koncový bod musí obsahovat , který obsahuje rozsah , v hlavičce .
Více informací
- Identity a ověřování Microsoftu (MSAL) pro jazyk Java
- 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
- Principy 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