Omówienie logowania przy użyciu biblioteki MSAL4J
Biblioteka MSAL4J łączy konfigurację aplikacji z interfejsami API platformy tożsamości firmy Microsoft do uwierzytelniania i uzyskiwania tokenów. W tej lekcji omówiono przykład tworzenia klienta oraz rolę biblioteki w przepływie logowania w aplikacji internetowej.
Biblioteka uwierzytelniania firmy Microsoft dla języka Java
Microsoft Authentication Library for Java (MSAL4J) umożliwia aplikacjom uwierzytelnianie przy użyciu tożsamości Microsoft i uzyskiwanie tokenów dla chronionych interfejsów API. Obsługuje scenariusze obejmujące Microsoft Entra ID, osobiste konta Microsoft i Azure AD B2C przy użyciu protokołu OAuth 2.0 i OpenID Connect.
Note
Istniejący klienci usługi Azure AD B2C mogą nadal korzystać z usługi. Od 1 maja 2025 r. nie jest ona dostępna do zakupu przez nowych klientów i wsparcie techniczne będzie kontynuowane co najmniej do maja 2030 r. Azure AD B2C P2 został wycofany dla wszystkich klientów 15 marca 2026 r.; dalsze wsparcie usługi nie obejmuje wycofanych funkcji dostępnych wyłącznie w planie P2.
W przypadku nowych projektów tożsamości klienta użyj Tożsamość zewnętrzna Microsoft Entra. Scenariusz omawiany w tym module dotyczy dzierżawy pracowniczej Microsoft Entra, a nie dzierżawy Azure AD B2C ani zewnętrznej dzierżawy External ID. Aby uzyskać szczegółowe informacje, zobacz często zadawane pytania dotyczące zakończenia sprzedaży usługi Azure AD B2C.
Biblioteka MSAL4J obsługuje kilka typów aplikacji, takich jak aplikacje internetowe, usługi działające w tle, aplikacje wiersza polecenia i aplikacje klasyczne. Odpowiedni typ klienta i przepływ pozyskiwania tokenów zależą od środowiska aplikacji.
Poufny klient reprezentuje aplikację serwera
Biblioteka MSAL rozróżnia klientów publicznych, którzy nie są w stanie bezpiecznie przechowywać poświadczeń aplikacji, od poufnych klientów, którzy mogą uwierzytelniać się za pomocą bezpiecznie przechowywanych poświadczeń. Aplikacja internetowa Java po stronie serwera jest klientem poufnym.
Poniższy fragment ilustracyjny konstruuje tego klienta. Nazwy zapisane wielkimi literami są symbolami zastępczymi używanymi w konfiguracji, a nie prawdziwymi identyfikatorami ani sekretami. Importy, otaczający kod aplikacji i obsługa wyjątków nie są wyświetlane.
IClientCredential credential = ClientCredentialFactory.createFromSecret(CLIENT_SECRET);
ConfidentialClientApplication app = ConfidentialClientApplication
.builder(CLIENT_ID, credential)
.authority(AUTHORITY)
.build();
Fragment łączy trzy dane wejściowe:
| Dane wejściowe | Meaning |
|---|---|
CLIENT_ID |
Identyfikator aplikacji z rejestracji. |
CLIENT_SECRET |
Symbol zastępczy dla materiałów tajnych dostarczonych do serwera. To przedstawia mechanizm tworzenia poświadczeń, a nie żądanie utworzenia lub umieszczenia sekretu. |
AUTHORITY |
Adres URL dostawcy tożsamości i grupa odbiorców logowania. W scenariuszu pojedynczej dzierżawy identyfikuje wybraną dzierżawę Microsoft Entra. |
ClientCredentialFactory tworzy obiekt poświadczeń, a konstruktor obiektu powiązuje to poświadczenie z identyfikatorem klienta aplikacji i organem autoryzacji. Wywołanie build() tworzy klienta MSAL; nie powoduje zalogowania użytkownika ani nie przekierowuje przeglądarki nigdzie.
Rola biblioteki MSAL w procesie uzyskiwania kodu autoryzacyjnego
Poufny klient uwierzytelnia aplikację, podczas gdy interakcja przeglądarki uwierzytelnia użytkownika. Aplikacja koordynuje te części przepływu:
| Phase | MSAL API | Odpowiedzialność za aplikację |
|---|---|---|
| Uruchom logowanie w przeglądarce | getAuthorizationRequestUrl |
Skonstruuj żądanie autoryzacji i przekieruj do niego przeglądarkę. |
| Zrealizuj kod autoryzacji |
acquireToken Z AuthorizationCodeParameters |
Przetwórz wywołanie zwrotne, zweryfikuj odpowiedź i wymień odebrany kod dla tokenów. |
| Uzyskiwanie tokenu na potrzeby późniejszego wywołania interfejsu API |
acquireTokenSilently Z SilentParameters |
Podaj konto i odpowiedni kontekst pamięci podręcznej tokenu oraz obsłuż przypadki, które wymagają interakcji z użytkownikiem. |
W przypadku tej aplikacji internetowej wywołanie zwrotne odbiera kod autoryzacji, a nie token dostępu Microsoft Graph. Realizacja kodu odbywa się za pomocą żądania między serwerami wysyłanego do punktu końcowego tokena.
Interpretowanie wyniku uwierzytelniania
Pomyślne wykup kodu zwraca wartość IAuthenticationResult. W tym scenariuszu OpenID Connect w wyniku uzyskuje się token ID dla aplikacji oraz token dostępu dla żądanego interfejsu API. Zawiera również informacje używane do zarządzania kontem i okresem istnienia tokenu.
Token identyfikatora zawiera oświadczenia tożsamości; token dostępu umożliwia żądanie do zamierzonego interfejsu API. Token identyfikatora nie zastępuje tokenu dostępu Microsoft Graph. Biblioteka MSAL4J uzyskuje tokeny, ale aplikacja lub zestaw SDK specyficzny dla interfejsu API wykonuje kolejne wywołanie interfejsu API biznesowego.
Następna lekcja omawia te zadania na przykładzie kodu serwletu z adnotacjami. Omówienie biblioteki MSAL zawiera dodatkowy kontekst dotyczący obsługiwanych scenariuszy i zarządzania tokenami.