Odnajdywanie uprawnień i zgody

Ukończone

Aplikacje zintegrowane z Platforma tożsamości Microsoft korzystają z modelu autoryzacji, który zapewnia użytkownikom i administratorom kontrolę nad sposobem uzyskiwania dostępu do danych.

Platforma tożsamości Microsoft implementuje protokół autoryzacji OAuth 2.0. OAuth 2.0 to metoda, za pomocą której aplikacja innej firmy może uzyskiwać dostęp do zasobów hostowanych w Internecie w imieniu użytkownika. Każdy zasób hostowany w internecie integrujący się z Platforma tożsamości Microsoft ma identyfikator zasobu lub identyfikator URI identyfikatora aplikacji.

Oto kilka przykładów zasobów hostowanych przez internet firmy Microsoft:

  • Microsoft Graph: https://graph.microsoft.com
  • Interfejs API poczty platformy Microsoft 365: https://outlook.office.com
  • Azure Key Vault: https://vault.azure.net

To samo dotyczy wszystkich zasobów innych firm, które zostały zintegrowane z Platforma tożsamości Microsoft. Każdy z tych zasobów może również zdefiniować zestaw uprawnień, które mogą służyć do dzielenia funkcji tego zasobu na mniejsze fragmenty. Gdy funkcjonalność zasobu jest podzielona na małe zestawy uprawnień, aplikacje innych firm można skompilować, aby zażądać tylko uprawnień potrzebnych do wykonania funkcji. Użytkownicy i administratorzy mogą wiedzieć, do jakich danych może uzyskiwać dostęp aplikacja.

W usłudze OAuth 2.0 te typy zestawów uprawnień są nazywane zakresami. Są one również często określane jako uprawnienia. W Platforma tożsamości Microsoft uprawnienie jest reprezentowane jako wartość ciągu. Aplikacja żąda wymaganych uprawnień, określając uprawnienie w parametrze scope zapytania. Platforma tożsamości obsługuje kilka dobrze zdefiniowanych zakresów openID Połączenie i uprawnień opartych na zasobach (każde uprawnienie jest wskazywane przez dołączenie wartości uprawnień do identyfikatora zasobu lub identyfikatora URI identyfikatora aplikacji). Na przykład ciąg https://graph.microsoft.com/Calendars.Read uprawnień jest używany do żądania uprawnień do odczytywania kalendarzy użytkowników w programie Microsoft Graph.

Aplikacja najczęściej żąda tych uprawnień, określając zakresy w żądaniach do punktu końcowego autoryzacji Platforma tożsamości Microsoft. Jednak niektóre uprawnienia o wysokim poziomie uprawnień można udzielać tylko za pośrednictwem zgody administratora. Można je zażądać lub udzielić przy użyciu punktu końcowego zgody administratora.

Uwaga

W żądaniach autoryzacji, tokenu lub punktu końcowego zgody dla platformy Tożsamości Microsoft, jeśli identyfikator zasobu zostanie pominięty w parametrze zakresu, zakłada się, że zasób jest programem Microsoft Graph. Na przykład instrukcja scope=User.Read jest równoważna instrukcji https://graph.microsoft.com/User.Read.

Typy uprawnień

Platforma tożsamości Microsoft obsługuje dwa typy uprawnień: uprawnienia delegowane i dostęp tylko do aplikacji.

  • Uprawnienia delegowane są używane przez aplikacje, w których jest zalogowany użytkownik. W przypadku tych aplikacji użytkownik lub administrator wyraża zgodę na uprawnienia żądane przez aplikację. Aplikacja jest delegowana z uprawnieniami do działania jako zalogowany użytkownik, gdy wykonuje wywołania zasobu docelowego.

  • Uprawnienia dostępu tylko do aplikacji są używane przez aplikacje uruchamiane bez zalogowanego użytkownika, na przykład aplikacje uruchamiane jako usługi w tle lub demony. Tylko administrator może wyrazić zgodę na uprawnienia dostępu tylko do aplikacji.

Aplikacje w Platforma tożsamości Microsoft polegają na wyrażaniu zgody w celu uzyskania dostępu do niezbędnych zasobów lub interfejsów API. Istnieje wiele rodzajów zgody, o których aplikacja może potrzebować informacji, aby mogła zakończyć się powodzeniem. Jeśli definiujesz uprawnienia, musisz również zrozumieć, jak użytkownicy uzyskują dostęp do aplikacji lub interfejsu API.

Istnieją trzy typy zgody: statyczna zgoda użytkownika, przyrostowa i dynamiczna zgoda użytkownika oraz zgoda administratora.

W scenariuszu ze statyczną zgodą użytkownika musisz określić wszystkie wymagane uprawnienia w konfiguracji aplikacji w witrynie Azure Portal. Jeśli użytkownik (lub administrator, zgodnie z potrzebami) nie udzielił zgody dla tej aplikacji, Platforma tożsamości Microsoft monituje użytkownika o wyrażenie zgody w tej chwili. Uprawnienia statyczne umożliwiają również administratorom wyrażanie zgody w imieniu wszystkich użytkowników w organizacji.

Podczas gdy uprawnienia statyczne aplikacji zdefiniowanej w witrynie Azure Portal zachowują ładne i proste kod, przedstawia on pewne możliwe problemy dla deweloperów:

  • Aplikacja musi zażądać wszystkich uprawnień, których kiedykolwiek potrzebowała podczas pierwszego logowania użytkownika. Może to prowadzić do długiej listy uprawnień, które zniechęcają użytkowników końcowych do zatwierdzania dostępu aplikacji podczas początkowego logowania.

  • Aplikacja musi znać wszystkie zasoby, do których kiedykolwiek uzyskuje dostęp przed upływem czasu. Trudno jest utworzyć aplikacje, które mogą uzyskiwać dostęp do dowolnej liczby zasobów.

Za pomocą punktu końcowego Platforma tożsamości Microsoft można zignorować uprawnienia statyczne zdefiniowane w informacjach dotyczących rejestracji aplikacji w witrynie Azure Portal i żądać uprawnień przyrostowo. Możesz poprosić o minimalny zestaw uprawnień z góry i zażądać więcej w miarę upływu czasu, ponieważ klient korzysta z większej liczby funkcji aplikacji.

W tym celu można w dowolnym momencie określić zakresy wymagane przez aplikację, dołączając nowe zakresy w parametrze scope podczas żądania tokenu dostępu — bez konieczności wstępnie zdefiniowanych w informacjach dotyczących rejestracji aplikacji. Jeśli użytkownik nie wyraził jeszcze zgody na nowe zakresy dodane do żądania, zostanie wyświetlony monit o wyrażenie zgody tylko na nowe uprawnienia. Przyrostowa lub dynamiczna zgoda dotyczy tylko uprawnień delegowanych, a nie uprawnień dostępu tylko do aplikacji.

Ważne

Dynamiczne udzielanie zgody może być wygodne, ale stanowi duże wyzwanie w przypadku uprawnień wymagających zgody administratora, ponieważ w momencie wyrażania zgody administrator nie dysponuje informacjami dotyczącymi uprawnień. Jeśli potrzebujesz uprawnień uprzywilejowanych administratora lub jeśli aplikacja używa dynamicznej zgody, musisz zarejestrować wszystkie uprawnienia w witrynie Azure Portal (nie tylko podzestaw uprawnień, które wymagają zgody administratora). Dzięki temu administratorzy dzierżawy mogą wyrazić zgodę w imieniu wszystkich użytkowników.

Administracja zgoda jest wymagana, gdy aplikacja potrzebuje dostępu do pewnych uprawnień o wysokim poziomie uprawnień. Administracja zgody zapewnia, że administratorzy mają inne mechanizmy kontroli przed autoryzowaniem aplikacji lub użytkowników w celu uzyskania dostępu do wysoce uprzywilejowanych danych z organizacji.

Administracja zgoda wykonywana w imieniu organizacji nadal wymaga uprawnień statycznych zarejestrowanych w aplikacji. Ustaw te uprawnienia dla aplikacji w portalu rejestracji aplikacji, jeśli potrzebujesz administratora, aby wyrazić zgodę w imieniu całej organizacji. Zmniejsza to cykle wymagane przez administratora organizacji do skonfigurowania aplikacji.

W żądaniu autoryzacji openID Połączenie lub OAuth 2.0 aplikacja może zażądać wymaganych uprawnień przy użyciu parametru zapytania zakresu. Na przykład gdy użytkownik loguje się do aplikacji, aplikacja wysyła żądanie podobne do poniższego przykładu. Podziały wierszy są dodawane w celu uzyskania czytelności.

GET https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&response_type=code
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&response_mode=query
&scope=
https%3A%2F%2Fgraph.microsoft.com%2Fcalendars.read%20
https%3A%2F%2Fgraph.microsoft.com%2Fmail.send
&state=12345

Parametr scope to rozdzielona spacjami lista delegowanych uprawnień, których żąda aplikacja. Każde uprawnienie jest wskazywane przez dołączenie wartości uprawnień do identyfikatora zasobu (identyfikatora URI identyfikatora aplikacji). W przykładzie żądania aplikacja musi mieć uprawnienia do odczytywania kalendarza użytkownika i wysyłania wiadomości e-mail jako użytkownika.

Po wprowadzeniu poświadczeń użytkownika Platforma tożsamości Microsoft sprawdza pasujący rekord zgody użytkownika. Jeśli użytkownik nie wyraził zgody na jakiekolwiek żądane uprawnienia w przeszłości, a administrator nie wyraził zgody na te uprawnienia w imieniu całej organizacji, Platforma tożsamości Microsoft prosi użytkownika o udzielenie żądanych uprawnień.