Udostępnij za pośrednictwem


Włączanie logowania dla aplikacji EAP java JBoss przy użyciu biblioteki MSAL4J z usługą Azure Active Directory B2C

W tym artykule przedstawiono aplikację java JBoss EAP, która uwierzytelnia użytkowników w usłudze Azure Active Directory B2C (Azure AD B2C) przy użyciu biblioteki Microsoft Authentication Library for Java (MSAL4J).

Na poniższym diagramie przedstawiono topologię aplikacji:

Diagram przedstawiający topologię aplikacji.

Aplikacja używa biblioteki MSAL4J do logowania użytkowników i uzyskiwania tokenu identyfikatora z usługi Azure AD B2C. Token identyfikatora potwierdza, że użytkownik jest uwierzytelniany w dzierżawie usługi Azure AD B2C.

Wymagania wstępne

Zalecenia

  • Znajomość serwletów Java/Dżakarta.
  • Pewna znajomość terminalu systemu Linux/OSX.
  • jwt.ms na potrzeby inspekcji tokenów.
  • Program Fiddler do monitorowania aktywności sieci i rozwiązywania problemów.
  • Postępuj zgodnie z blogiem Microsoft Entra ID, aby być na bieżąco z najnowszymi wydarzeniami.

Konfigurowanie przykładu

W poniższych sekcjach pokazano, jak skonfigurować przykładową aplikację.

Klonowanie lub pobieranie przykładowego repozytorium

Aby sklonować przykład, otwórz okno powłoki Bash i użyj następującego polecenia:

git clone https://github.com/Azure-Samples/ms-identity-msal-java-samples.git
cd 3-java-servlet-web-app/1-Authentication/sign-in-b2c

Alternatywnie przejdź do repozytorium ms-identity-msal-java-samples , a następnie pobierz go jako plik .zip i wyodrębnij go na dysk twardy.

Ważne

Aby uniknąć ograniczeń długości ścieżki pliku w systemie Windows, sklonuj lub wyodrębnij repozytorium do katalogu w pobliżu katalogu głównego dysku twardego.

Rejestrowanie przykładowej aplikacji w dzierżawie usługi Azure AD B2C

Przykład zawiera wstępnie wyrejestrowaną aplikację do celów testowych. Jeśli chcesz użyć własnej dzierżawy i aplikacji usługi Azure AD B2C, wykonaj kroki opisane w poniższych sekcjach, aby zarejestrować i skonfigurować aplikację w witrynie Azure Portal. W przeciwnym razie wykonaj kroki uruchamiania przykładu.

Wybierz dzierżawę usługi Azure AD B2C, w której chcesz utworzyć aplikacje

Aby wybrać dzierżawę, wykonaj następujące kroki:

  1. Zaloguj się w witrynie Azure Portal.

  2. Jeśli Twoje konto znajduje się w więcej niż jednej dzierżawie usługi Azure AD B2C, wybierz swój profil w rogu witryny Azure Portal, a następnie wybierz pozycję Przełącz katalog , aby zmienić sesję na żądaną dzierżawę usługi Azure AD B2C.

Tworzenie przepływów użytkownika i zasad niestandardowych

Aby utworzyć typowe przepływy użytkowników, takie jak rejestrowanie, logowanie, edytowanie profilu i resetowanie hasła, zobacz Samouczek: tworzenie przepływów użytkowników w usłudze Azure Active Directory B2C.

Należy również rozważyć utworzenie zasad niestandardowych w usłudze Azure Active Directory B2C , jednak wykracza to poza zakres tego samouczka.

Dodawanie zewnętrznych dostawców tożsamości

Zobacz Samouczek: dodawanie dostawców tożsamości do aplikacji w usłudze Azure Active Directory B2C.

Rejestrowanie aplikacji (ms-identity-b2c-java-servlet-webapp-authentication)

Aby zarejestrować aplikację, wykonaj następujące czynności:

  1. Przejdź do witryny Azure Portal i wybierz pozycję Azure AD B2C.

  2. Wybierz pozycję Rejestracje aplikacji w okienku nawigacji, a następnie wybierz pozycję Nowa rejestracja.

  3. Na wyświetlonej stronie Rejestrowanie aplikacji wprowadź następujące informacje o rejestracji aplikacji:

    • W sekcji Nazwa wprowadź zrozumiałą nazwę aplikacji do wyświetlania użytkownikom aplikacji — na przykład ms-identity-b2c-java-servlet-webapp-authentication.
    • W obszarze Obsługiwane typy kont wybierz pozycję Konta w dowolnym katalogu organizacyjnym i osobistych kontach Microsoft (np. Skype, Xbox, Outlook.com).
    • W sekcji Identyfikator URI przekierowania (opcjonalnie) wybierz pozycję Sieć Web w polu kombi i wprowadź następujący identyfikator URI przekierowania: http://localhost:8080/ms-identity-b2c-java-servlet-webapp-authentication/auth_redirect.
  4. Wybierz pozycję Zarejestruj, aby utworzyć aplikację.

  5. Na stronie rejestracji aplikacji znajdź i skopiuj wartość Identyfikator aplikacji (klienta), aby użyć jej później. Ta wartość jest używana w pliku konfiguracji aplikacji lub plikach.

  6. Wybierz Zapisz, aby zapisać zmiany.

  7. Na stronie rejestracji aplikacji wybierz pozycję Certyfikaty i wpisy tajne w okienku nawigacji, aby otworzyć stronę, na której można wygenerować wpisy tajne i przekazać certyfikaty.

  8. W sekcji Klucze tajne klienta wybierz pozycję Nowy klucz tajny klienta.

  9. Wpisz opis — na przykład wpis tajny aplikacji.

  10. Wybierz jeden z dostępnych czasów trwania: W ciągu 1 roku w ciągu 2 lat lub Nigdy nie wygasa.

  11. Wybierz Dodaj. Zostanie wyświetlona wygenerowana wartość.

  12. Skopiuj i zapisz wygenerowaną wartość do użycia w kolejnych krokach. Ta wartość jest potrzebna dla plików konfiguracji kodu. Ta wartość nie jest ponownie wyświetlana i nie można jej pobrać w żaden inny sposób. Dlatego przed przejściem do innego ekranu lub okienka pamiętaj, aby zapisać go w witrynie Azure Portal.

Konfigurowanie aplikacji (ms-identity-b2c-java-servlet-webapp-authentication) w celu korzystania z rejestracji aplikacji

Aby skonfigurować aplikację, wykonaj następujące kroki:

Uwaga

W poniższych krokach ClientID jest to samo co Application ID lub AppId.

  1. Otwórz projekt w środowisku IDE.

  2. Otwórz plik ./src/main/resources/authentication.properties.

  3. aad.clientId Znajdź właściwość i zastąp istniejącą wartość identyfikatorem aplikacji lub clientId ms-identity-b2c-java-servlet-webapp-authentication aplikacją z witryny Azure Portal.

  4. aad.secret Znajdź właściwość i zastąp istniejącą wartość wartością zapisaną podczas tworzenia ms-identity-b2c-java-servlet-webapp-authentication aplikacji w witrynie Azure Portal.

  5. aad.scopes Znajdź właściwość i zastąp istniejący identyfikator clientId aplikacji wartością umieszczoną aad.clientId w kroku 1 tej sekcji.

  6. aad.authority Znajdź właściwość i zastąp pierwsze wystąpienie fabrikamb2c nazwą dzierżawy usługi Azure AD B2C, w której utworzono aplikację ms-identity-b2c-java-servlet-webapp-authentication w witrynie Azure Portal.

  7. aad.authority Znajdź właściwość i zastąp drugie wystąpienie fabrikamb2c nazwą dzierżawy usługi Azure AD B2C, w której utworzono aplikację ms-identity-b2c-java-servlet-webapp-authentication w witrynie Azure Portal.

  8. aad.signInPolicy Znajdź właściwość i zastąp ją nazwą zasad rejestracji/logowania utworzonych w dzierżawie usługi Azure AD B2C, w której utworzono aplikację ms-identity-b2c-java-servlet-webapp-authentication w witrynie Azure Portal.

  9. aad.passwordResetPolicy Znajdź właściwość i zastąp ją nazwą zasad resetowania hasła utworzonych w dzierżawie usługi Azure AD B2C, w której utworzono aplikację ms-identity-b2c-java-servlet-webapp-authentication w witrynie Azure Portal.

  10. aad.editProfilePolicy Znajdź właściwość i zastąp ją nazwą zasad przepływu użytkownika profilu edycji utworzonych w dzierżawie usługi Azure AD B2C, w której utworzono aplikację ms-identity-b2c-java-servlet-webapp-authentication w witrynie Azure Portal.

Tworzenie przykładu

Aby skompilować przykład przy użyciu narzędzia Maven, przejdź do katalogu zawierającego plik pom.xml dla przykładu, a następnie uruchom następujące polecenie:

mvn clean package

To polecenie generuje plik war , który można uruchomić na różnych serwerach aplikacji.

Uruchamianie aplikacji przykładowej

W poniższych sekcjach pokazano, jak wdrożyć przykład w usłudze aplikacja systemu Azure Service.

Wymagania wstępne

Konfigurowanie wtyczki Maven

Proces wdrażania w celu aplikacja systemu Azure Service automatycznie używa poświadczeń platformy Azure z poziomu interfejsu wiersza polecenia platformy Azure. Jeśli interfejs wiersza polecenia platformy Azure nie jest zainstalowany lokalnie, wtyczka Maven uwierzytelnia się przy użyciu protokołu OAuth lub logowania urządzenia. Aby uzyskać więcej informacji, zobacz authentication with Maven plugins (Uwierzytelnianie za pomocą wtyczek maven).

Aby skonfigurować wtyczkę, wykonaj następujące czynności:

  1. Uruchom polecenie Maven wyświetlane obok, aby skonfigurować wdrożenie. To polecenie pomaga skonfigurować system operacyjny usługi App Service, wersję języka Java i wersję serwera Tomcat.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:config
    
  2. W obszarze Utwórz nową konfigurację przebiegu naciśnij Y, a następnie naciśnij Enter.

  3. W polu Zdefiniuj wartość systemu operacyjnego naciśnij 2 dla systemu Linux, a następnie naciśnij Enter.

  4. W polu Zdefiniuj wartość dla javaVersion naciśnij 2 dla języka Java 11, a następnie naciśnij Enter.

  5. W polu Zdefiniuj wartość dla elementu webContainer naciśnij 1 dla JBosseap7, a następnie naciśnij Enter.

  6. W obszarze Zdefiniuj wartość dla wartości pricingTier naciśnij Enter , aby wybrać domyślną warstwę P1v3 .

  7. Aby potwierdzić, naciśnij Y, a następnie naciśnij Enter.

W poniższym przykładzie przedstawiono dane wyjściowe procesu wdrażania:

Please confirm webapp properties
AppName : msal4j-servlet-auth-1707220080695
ResourceGroup : msal4j-servlet-auth-1707220080695-rg
Region : centralus
PricingTier : P1v3
OS : Linux
Java Version: Java 11
Web server stack: JBosseap 7
Deploy to slot : false
Confirm (Y/N) [Y]:
[INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  26.196 s
[INFO] Finished at: 2024-02-06T11:48:16Z
[INFO] ------------------------------------------------------------------------

Po potwierdzeniu wybranych opcji wtyczka dodaje konfigurację wtyczki i wymagane ustawienia do pliku pom.xml projektu, aby skonfigurować aplikację do uruchamiania w usłudze aplikacja systemu Azure Service.

Odpowiednia część pliku pom.xml powinna wyglądać podobnie do poniższego przykładu:

<build>
    <plugins>
        <plugin>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>>azure-webapp-maven-plugin</artifactId>
            <version>x.xx.x</version>
            <configuration>
                <schemaVersion>v2</schemaVersion>
                <resourceGroup>your-resourcegroup-name</resourceGroup>
                <appName>your-app-name</appName>
            ...
            </configuration>
        </plugin>
    </plugins>
</build>

Konfiguracje usługi App Service można modyfikować bezpośrednio w pom.xml. Niektóre typowe konfiguracje są wymienione w poniższej tabeli:

Właściwości Wymagania Opis Wersja
schemaVersion fałsz Wersja schematu konfiguracji. Obsługiwane wartości to v1 i v2. 1.5.2
subscriptionId fałsz Identyfikator subskrypcji. 0.1.0+
resourceGroup prawda Grupa zasobów platformy Azure dla aplikacji. 0.1.0+
appName prawda Nazwa aplikacji. 0.1.0+
region fałsz Region, w którym ma być hostowana aplikacja. Domyślna wartość to centralus. Aby zapoznać się z prawidłowymi regionami, zobacz Obsługiwane regiony. 0.1.0+
pricingTier fałsz Warstwa cenowa aplikacji. Wartość domyślna to P1v2 dla obciążenia produkcyjnego. Zalecaną minimalną wartością dla programowania i testowania języka Java jest B2. Aby uzyskać więcej informacji, zobacz Cennik usługi App Service 0.1.0+
runtime fałsz Konfiguracja środowiska uruchomieniowego. Aby uzyskać więcej informacji, zobacz Szczegóły konfiguracji. 0.1.0+
deployment fałsz Konfiguracja wdrożenia. Aby uzyskać więcej informacji, zobacz Szczegóły konfiguracji. 0.1.0+

Pełną listę konfiguracji można znaleźć w dokumentacji referencyjnej wtyczki. Wszystkie wtyczki usługi Azure Maven mają wspólny zestaw konfiguracji. Aby uzyskać te konfiguracje, zobacz Typowe konfiguracje. Aby uzyskać konfiguracje specyficzne dla usługi aplikacja systemu Azure, zobacz Azure app: Configuration Details (Aplikacja platformy Azure: szczegóły konfiguracji).

Pamiętaj, aby zapisać wartości i resourceGroup do późniejszego appName użycia.

Przygotowywanie aplikacji do wdrożenia

Podczas wdrażania aplikacji w usłudze App Service adres URL przekierowania zmieni się na adres URL przekierowania wdrożonego wystąpienia aplikacji. Aby zmienić te ustawienia w pliku właściwości, wykonaj następujące czynności:

  1. Przejdź do pliku authentication.properties aplikacji i zmień wartość app.homePage na nazwę domeny wdrożonej aplikacji, jak pokazano w poniższym przykładzie. Jeśli na przykład wybrano example-domain nazwę aplikacji w poprzednim kroku, musisz teraz użyć https://example-domain.azurewebsites.net wartości app.homePage . Upewnij się, że protokół został również zmieniony z http na https.

    # 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://<your-app-name>.azurewebsites.net
    
  2. Po zapisaniu tego pliku użyj następującego polecenia, aby ponownie skompilować aplikację:

    mvn clean package
    

Ważne

W tym samym pliku authentication.properties masz ustawienie dla pliku aad.secret. Wdrożenie tej wartości w usłudze App Service nie jest dobrym rozwiązaniem. Nie jest dobrym rozwiązaniem, aby pozostawić tę wartość w kodzie i potencjalnie wypchnąć ją do repozytorium Git. Aby usunąć tę wartość wpisu tajnego z kodu, możesz znaleźć bardziej szczegółowe wskazówki w sekcji Wdrażanie w usłudze App Service — Usuwanie wpisu tajnego . Te wskazówki dodają dodatkowe kroki wypychania wartości wpisu tajnego do usługi Key Vault i używania odwołań usługi Key Vault.

Aktualizowanie rejestracji aplikacji Microsoft Entra ID

Ponieważ identyfikator URI przekierowania zmienia się w wdrożonej aplikacji w usłudze aplikacja systemu Azure, musisz również zmienić identyfikator URI przekierowania w rejestracji aplikacji Microsoft Entra ID. Aby wprowadzić tę zmianę, wykonaj następujące czynności:

  1. Przejdź do strony Platforma tożsamości Microsoft dla deweloperów Rejestracje aplikacji.

  2. Użyj pola wyszukiwania, aby wyszukać rejestrację aplikacji — na przykład java-servlet-webapp-authentication.

  3. Otwórz rejestrację aplikacji, wybierając jej nazwę.

  4. Wybierz Uwierzytelnianie z menu poleceń.

  5. W sekcji Identyfikatory URI przekierowania sieci Web - wybierz pozycję Dodaj identyfikator URI.

  6. Wypełnij identyfikator URI aplikacji, dołączając /auth/redirect na przykład https://<your-app-name>.azurewebsites.net/auth/redirect.

  7. Wybierz pozycję Zapisz.

Wdrażanie aplikacji

Teraz możesz przystąpić do wdrażania aplikacji w usłudze aplikacja systemu Azure Service. Użyj następującego polecenia, aby upewnić się, że zalogowano się do środowiska platformy Azure w celu wykonania wdrożenia:

az login

Po korzystaniu ze wszystkich konfiguracji gotowych w pliku pom.xml możesz teraz użyć następującego polecenia, aby wdrożyć aplikację Java na platformie Azure:

mvn package azure-webapp:deploy

Po zakończeniu wdrażania aplikacja jest gotowa pod adresem http://<your-app-name>.azurewebsites.net/. Otwórz adres URL w lokalnej przeglądarce internetowej, gdzie powinna zostać wyświetlona strona początkowa msal4j-servlet-auth aplikacji.

Eksplorowanie przykładu

Aby zapoznać się z przykładem, wykonaj następujące czynności:

  1. Zwróć uwagę na stan logowania lub wylogowania wyświetlany na środku ekranu.
  2. Wybierz przycisk kontekstowy w rogu. Ten przycisk odczytuje pozycję Zaloguj po pierwszym uruchomieniu aplikacji.
  3. Na następnej stronie postępuj zgodnie z instrukcjami i zaloguj się przy użyciu konta wybranego dostawcy tożsamości.
  4. Zwróć uwagę, że przycisk kontekstowy zawiera teraz pozycję Wyloguj się i wyświetla swoją nazwę użytkownika.
  5. Wybierz pozycję Szczegóły tokenu identyfikatora, aby wyświetlić niektóre zdekodowane oświadczenia tokenu identyfikatora.
  6. Istnieje również możliwość edytowania profilu. Wybierz link, aby edytować szczegóły, takie jak nazwa wyświetlana, miejsce zamieszkania i zawód.
  7. Użyj przycisku w rogu, aby się wylogować.
  8. Po wylogowaniu przejdź do następującego adresu URL strony szczegółów tokenu: http://localhost:8080/ms-identity-b2c-java-servlet-webapp-authentication/auth_token_details. W tym miejscu możesz zobaczyć, jak aplikacja wyświetla 401: unauthorized błąd zamiast oświadczeń tokenu identyfikatora.

Informacje o kodzie

W tym przykładzie pokazano, jak używać biblioteki MSAL4J do logowania użytkowników do dzierżawy usługi Azure AD B2C.

Zawartość

W poniższej tabeli przedstawiono zawartość przykładowego folderu projektu:

Plik/folder opis
AuthHelper.java Funkcje pomocnika na potrzeby uwierzytelniania.
Config.java Uruchamia się przy uruchamianiu i konfiguruje czytnik właściwości i rejestrator.
authentication.properties Microsoft Entra ID i konfiguracja programu.
AuthenticationFilter.java Przekierowuje nieuwierzytelnione żądania do chronionych zasobów na stronie 401.
MsalAuthSession Utworzenie wystąpienia za pomocą elementu HttpSession. Przechowuje wszystkie atrybuty sesji powiązanej z biblioteką MSAL w atrybucie sesji.
____Servlet.java Wszystkie dostępne punkty końcowe są definiowane w klasach .java kończących się na ____Servlet.java.
CHANGELOG.md Lista zmian w przykładzie.
CONTRIBUTING.md Wskazówki dotyczące współtworzenia przykładu.
LICENCJA Licencja dla przykładu.

ConfidentialClientApplication

Wystąpienie ConfidentialClientApplication jest tworzone w pliku AuthHelper.java , jak pokazano w poniższym przykładzie. Ten obiekt ułatwia utworzenie adresu URL autoryzacji usługi Azure AD B2C, a także pomaga w wymianie tokenu uwierzytelniania dla tokenu dostępu.

IClientSecret secret = ClientCredentialFactory.createFromSecret(SECRET);
confClientInstance = ConfidentialClientApplication
                     .builder(CLIENT_ID, secret)
                     .b2cAuthority(AUTHORITY + policy)
                     .build();

Następujące parametry są używane do tworzenia wystąpień:

  • Identyfikator klienta aplikacji.
  • Wpis tajny klienta, który jest wymagany w przypadku poufnych aplikacji klienckich.
  • Urząd usługi Azure AD B2C jest połączony z odpowiednim UserFlowPolicy rozwiązaniem do tworzenia konta, logowania, edytowania profilu lub resetowania hasła.

W tym przykładzie te wartości są odczytywane z pliku authentication.properties przy użyciu czytnika właściwości w pliku Config.java .

Przewodnik krok po kroku

Poniższe kroki zawierają przewodnik po funkcjonalności aplikacji:

  1. Pierwszym krokiem procesu logowania jest wysłanie żądania do /authorize punktu końcowego dla dzierżawy usługi Azure Active Directory B2C. Wystąpienie MSAL4J ConfidentialClientApplication służy do konstruowania adresu URL żądania autoryzacji, a aplikacja przekierowuje przeglądarkę do tego adresu URL, jak pokazano w poniższym przykładzie:

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

    Poniższa lista zawiera opis funkcji tego kodu:

    • AuthorizationRequestUrlParameters: parametry, które należy ustawić w celu utworzenia elementu AuthorizationRequestUrl.

    • REDIRECT_URI: Gdzie usługa Azure AD B2C przekierowuje przeglądarkę — wraz z kodem uwierzytelniania — po zebraniu poświadczeń użytkownika.

    • SCOPES: Zakresy są uprawnieniami żądanymi przez aplikację.

      Zwykle trzy zakresy openid profile offline_access wystarczyłyby do otrzymania odpowiedzi tokenu identyfikatora. Jednak biblioteka MSAL4J wymaga, aby wszystkie odpowiedzi z usługi Azure AD B2C zawierały również token dostępu.

      Aby usługa Azure AD B2C zrezygnowała z tokenu dostępu, a także tokenu identyfikatora, żądanie musi zawierać dodatkowy zakres zasobów. Ponieważ ta aplikacja w rzeczywistości nie wymaga zewnętrznego zakresu zasobów, dodaje własny identyfikator klienta jako czwarty zakres w celu otrzymania tokenu dostępu.

      Pełną listę zakresów żądanych przez aplikację można znaleźć w pliku authentication.properties .

    • ResponseMode.QUERY: Usługa Azure AD B2C może zwrócić odpowiedź jako parametry formularza w żądaniu HTTP POST lub jako parametry ciągu zapytania w żądaniu HTTP GET.

    • Prompt.SELECT_ACCOUNT: Usługa Azure AD B2C powinna poprosić użytkownika o wybranie konta, względem którego zamierza się uwierzytelnić.

    • state: unikatowa zmienna ustawiona przez aplikację w sesji dla każdego żądania tokenu i zniszczona po otrzymaniu odpowiedniego wywołania zwrotnego przekierowania usługi Azure AD B2C. Zmienna stanu zapewnia, że żądania usługi Azure AD B2C do obiektu /auth_redirect endpoint są rzeczywiście wysyłane z żądań autoryzacji usługi Azure AD B2C pochodzących z tej aplikacji i tej sesji, zapobiegając tym samym atakom CSRF. Odbywa się to w pliku AADRedirectServlet.java .

    • nonce: unikatowa zmienna ustawiona przez aplikację w sesji w każdym żądaniu tokenu i zniszczona po otrzymaniu odpowiedniego tokenu. Ta wartość nie jest transkrypowana do wynikowych tokenów, do których wydano usługę Azure AD B2C, zapewniając tym samym, że nie ma żadnego ataku powtarzania tokenu.

  2. Użytkownik jest wyświetlany z monitem logowania przez usługę Azure Active Directory B2C. Jeśli próba logowania zakończy się pomyślnie, przeglądarka użytkownika zostanie przekierowana do punktu końcowego przekierowania aplikacji. Prawidłowe żądanie do tego punktu końcowego zawiera kod autoryzacji.

  3. Następnie ConfidentialClientApplication wystąpienie wymienia ten kod autoryzacji dla tokenu identyfikatora i tokenu dostępu z usługi Azure Active Directory B2C, jak pokazano w poniższym przykładzie:

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

    Poniższa lista zawiera opis funkcji tego kodu:

    • AuthorizationCodeParameters: Parametry, które należy ustawić w celu wymiany kodu autoryzacji dla identyfikatora i/lub tokenu dostępu.
    • authCode: kod autoryzacji, który został odebrany w punkcie końcowym przekierowania.
    • REDIRECT_URI: Identyfikator URI przekierowania użyty w poprzednim kroku musi zostać ponownie przekazany.
    • SCOPES: zakresy używane w poprzednim kroku muszą zostać ponownie przekazane.
  4. W przypadku acquireToken powodzenia oświadczenia tokenu są wyodrębniane, a oświadczenie niezwiązane z oświadczeniem jest weryfikowane względem innego elementu przechowywanego w sesji, jak pokazano w poniższym przykładzie:

    parseJWTClaimsSetAndStoreResultInSession(msalAuth, result, serializedTokenCache);
    validateNonce(msalAuth)
    processSuccessfulAuthentication(msalAuth);
    
  5. Jeśli stan uwierzytelniania nie jest pomyślnie zweryfikowany, stan uwierzytelniania jest umieszczany w sesji po stronie serwera, wykorzystując metody uwidocznione przez klasę MsalAuthSession , jak pokazano w poniższym przykładzie:

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

Więcej informacji

Aby uzyskać więcej informacji na temat sposobu działania protokołów OAuth 2.0 w tym scenariuszu i innych scenariuszach, zobacz Scenariusze uwierzytelniania dla identyfikatora Entra firmy Microsoft.