Ćwiczenie — autoryzowanie dostępu do interfejsu API programu Microsoft Graph przy użyciu biblioteki MSAL
W tym ćwiczeniu skonfigurujesz aplikację z uprawnieniami i użyjesz biblioteki MSAL, aby uzyskać dostęp do informacji o profilu użytkownika z interfejsu API programu Microsoft Graph (MS Graph).
Dodawanie uprawnień programu Microsoft Graph do rejestracji aplikacji
Usługi sieci Web zabezpieczone przez identyfikator Entra firmy Microsoft definiują zestaw uprawnień, które zapewniają dostęp do funkcji interfejsu API i danych udostępnianych przez usługę. Aby aplikacja mogła uzyskać dostęp do danych lub działać w imieniu użytkownika, musi zażądać zatwierdzenia tych uprawnień przez użytkowników. Te uprawnienia interfejsu API można przypisać do rejestracji aplikacji w witrynie Azure Portal. Poniżej przedstawiono kroki przypisywania uprawnień interfejsu API programu Microsoft Graph do aplikacji.
Na ekranie Rejestracje aplikacji wybierz pozycję Uprawnienia interfejsu API, aby dodać dostęp do interfejsów API wymaganych przez aplikację.
Wybierz Dodaj uprawnienie.
Upewnij się, że wybrano kartę Interfejsy API firmy Microsoft.
W sekcji Często używane interfejsy API firmy Microsoft wybierz pozycję Microsoft Graph, a następnie wybierz pozycję Uprawnienia delegowane.
W sekcji Uprawnienia delegowane przewiń w dół i wybierz pozycję User.Read na liście. To szczególne uprawnienie służy do uzyskiwania dostępu do informacji zalogowanego użytkownika z punktu końcowego
https://graph.microsoft.com/v1.0/me
.Wybierz Przyznaj uprawnienia.
Uruchamianie aplikacji
Możesz wypróbować wywołanie interfejsu API programu Graph dla aplikacji uruchomionej w poprzednim ćwiczeniu.
Otwórz przeglądarkę i przejdź do
http://localhost:8080/msal4j-servlet-graph/
adresu . Jeśli jeszcze nie zalogowano się, nastąpi przekierowanie w celu zalogowania się przy użyciu identyfikatora Entra firmy Microsoft. Po pomyślnym zalogowaniu powinna zostać wyświetlona strona, jak pokazano na poniższej ilustracji.Wybierz pozycję Wywołaj program Graph , aby wykonać wywołanie punktu końcowego programu Microsoft Graph
/me
i wyświetlić wyświetlone szczegóły użytkownika.
Omówienie kodu dostępu do programu Microsoft Graph
Kod umożliwiający dostęp do interfejsu API programu Microsoft Graph można znaleźć w serwlet servlet klasy CallGraphServlet.java
w katalogu msal4j/callgraphwebapp/ przykładowego projektu. Definiuje /call_graph
punkt końcowy w aplikacji, który wykonuje autoryzowane wywołania punktu końcowego interfejsu API https://graph.microsoft.com/v1.0/me
programu Microsoft Graph w celu pobrania informacji o profilu zalogowanego użytkownika. Poniżej przedstawiono więcej szczegółów kodu dostępu do programu Graph.
W pliku ./src/main/resources/authentication.properties wartość parametru
aad.scopes
jest ustawiona na zakres User.Read.Zakresy informują microsoft Entra ID o poziomie dostępu, którego aplikacja żąda i mapuje na uprawnienia w rejestracji aplikacji. Na podstawie żądanych zakresów identyfikator Entra firmy Microsoft przedstawia użytkownikowi okno dialogowe zgody po zalogowaniu się. Jeśli użytkownik wyrazi zgodę na co najmniej jeden zakres, jest on zakodowany w wynikowym
access_token
zwracanym w odpowiedzi uwierzytelniania.Gdy użytkownik przejdzie do
/call_graph
adresu , aplikacja tworzy wystąpienie elementu IGraphServiceClient (Zestaw SDK programu Microsoft Graph Java), przekazując token dostępu zalogowanego użytkownika. Klient programu Graph z tego miejsca umieszcza token dostępu w nagłówkach autoryzacji żądań. Następnie aplikacja prosi klienta programu Graph o wywołanie punktu końcowego programu Microsoft Graph/me
w celu uzyskania szczegółowych informacji dla aktualnie zalogowanego użytkownika.Poniższy kod jest wymagany dla dewelopera aplikacji do zapisu w celu uzyskania
/me
dostępu do punktu końcowego, pod warunkiem, że mają już prawidłowy token dostępu dla usługi Graph z zakresemUser.Read
.//CallGraphServlet.java User user = GraphHelper.getGraphClient(contextAdapter).me().buildRequest().get();