Udostępnij za pośrednictwem


Samouczek: przypisywanie ról niestandardowych za pomocą funkcji i programu Microsoft Graph

W tym artykule pokazano, jak za pomocą funkcji wysyłać zapytania do programu Microsoft Graph i przypisywać role niestandardowe do użytkownika na podstawie członkostwa w grupie usługi Active Directory.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Wdrażanie statycznej aplikacji internetowej.
  • Utwórz rejestrację aplikacji Entra firmy Microsoft.
  • Konfigurowanie uwierzytelniania niestandardowego przy użyciu identyfikatora Entra firmy Microsoft.
  • Skonfiguruj funkcję bezserwerową, która wysyła zapytanie do członkostwa w grupie usługi Active Directory użytkownika i zwraca listę ról niestandardowych.

Uwaga

Ten samouczek wymaga użycia funkcji do przypisywania ról. Zarządzanie rolami opartymi na funkcjach jest obecnie dostępne w wersji zapoznawczej. Poziom uprawnień wymagany do ukończenia tego samouczka to "User.Read.All".

W interfejsie API aplikacji istnieje funkcja o nazwie GetRoles . Ta funkcja używa tokenu dostępu użytkownika do wykonywania zapytań dotyczących usługi Active Directory z programu Microsoft Graph. Jeśli użytkownik jest członkiem dowolnych grup zdefiniowanych w aplikacji, odpowiednie role niestandardowe są mapowane na użytkownika.

Wymagania wstępne

Wymaganie Komentarze
Aktywne konto platformy Azure Jeśli go nie masz, możesz bezpłatnie utworzyć konto.
Uprawnienia Microsoft Entra Aby utworzyć aplikację Firmy Microsoft Entra, musisz mieć wystarczające uprawnienia.

Tworzenie repozytorium GitHub

  1. Wygeneruj repozytorium na podstawie szablonu funkcji ról. Przejdź do następującej lokalizacji, aby utworzyć nowe repozytorium.

    https://github.com/staticwebdev/roles-function/generate

  2. Nadaj repozytorium nazwę my-custom-roles-app.

  3. Wybierz pozycję Utwórz repozytorium na podstawie szablonu.

Wdrażanie statycznej aplikacji internetowej na platformie Azure

  1. W nowym oknie przeglądarki otwórz witrynę Azure Portal.

  2. W lewym górnym rogu wybierz pozycję Utwórz zasób.

  3. W polu wyszukiwania wpisz statyczne aplikacje internetowe.

  4. Wybierz pozycję Azure Static Web Apps.

  5. Wybierz pozycję Utwórz.

  6. Skonfiguruj statyczną aplikację internetową przy użyciu następujących informacji:

    Ustawienie Wartość Uwagi
    Subskrypcja Wybierz subskrypcję platformy Azure.
    Resource group Utwórz nową grupę o nazwie my-custom-roles-app-group.
    Nazwisko my-custom-roles-app
    Typ planu Standardowa Dostosowywanie uwierzytelniania i przypisywanie ról przy użyciu funkcji wymaga planu standardowego.
    Region dla interfejsu API Wybierz region znajdujący się najbliżej Ciebie.
  7. W sekcji Szczegóły wdrożenia:

    Ustawienie Wartość
    Lokalizacja źródłowa Wybierz pozycję GitHub.
    Organizacja Wybierz organizację, w której wygenerowano repozytorium.
    Repozytorium Wybierz pozycję my-custom-roles-app.
    Oddział Wybierz pozycję main.
  8. W sekcji Szczegóły kompilacji dodaj szczegóły konfiguracji dla tej aplikacji.

    Ustawienie Wartość Uwagi
    Ustawienia wstępne kompilacji Wybierz Niestandardowy.
    Lokalizacja aplikacji Wprowadź /fronton. Ten folder zawiera aplikację frontonu.
    Lokalizacja interfejsu API /Api Folder w repozytorium zawierający funkcje interfejsu API.
    Lokalizacja wyjściowa Pozostaw to pole puste. Ta aplikacja nie ma danych wyjściowych kompilacji.
  9. Wybierz pozycję Przejrzyj i utwórz.

  10. Wybierz pozycję Utwórz zainicjuj pierwsze wdrożenie.

  11. Po zakończeniu procesu wybierz pozycję Przejdź do zasobu , aby otworzyć nową statyczną aplikację internetową.

  12. W sekcji przeglądu znajdź adres URL aplikacji. Skopiuj tę wartość do edytora tekstów, aby użyć w kolejnych krokach konfigurowania uwierzytelniania usługi Active Directory.

Tworzenie aplikacji Firmy Microsoft Entra

  1. W witrynie Azure Portal wyszukaj i przejdź do pozycji Microsoft Entra ID.

  2. Z menu Zarządzaj wybierz pozycję Rejestracje aplikacji.

  3. Wybierz pozycję Nowa rejestracja , aby otworzyć okno Rejestrowanie aplikacji . Wprowadź następujące wartości:

    Ustawienie Wartość Uwagi
    Nazwisko Wprowadź wartość MyStaticWebApp.
    Obsługiwane typy kont Wybierz pozycję Konta tylko w tym katalogu organizacyjnym.
    Adres URI przekierowania Wybierz pozycję Sieć Web i wprowadź adres URL wywołania zwrotnego uwierzytelniania firmy Microsoft dla statycznej aplikacji internetowej. Zastąp <YOUR_SITE_URL> element adresem <YOUR_SITE_URL>/.auth/login/aad/callback URL statycznej aplikacji internetowej. Ten adres URL jest skopiowany do edytora tekstów we wcześniejszym kroku.

    Create an app registration

  4. Wybierz pozycję Zarejestruj.

  5. Po utworzeniu rejestracji aplikacji skopiuj identyfikator aplikacji (klienta) i identyfikator katalogu (dzierżawy) w sekcji Podstawy do edytora tekstów.

    Te wartości są potrzebne do skonfigurowania uwierzytelniania usługi Active Directory w statycznej aplikacji internetowej.

Włączanie tokenów identyfikatorów

  1. W ustawieniach rejestracji aplikacji wybierz pozycję Uwierzytelnianie w obszarze Zarządzanie.

  2. W sekcji Niejawne udzielanie i przepływy hybrydowe wybierz pozycję Tokeny identyfikatorów (używane w przypadku przepływów niejawnych i hybrydowych).

    Środowisko uruchomieniowe Static Web Apps wymaga tej konfiguracji do uwierzytelniania użytkowników.

  3. Wybierz pozycję Zapisz.

Tworzenie wpisu tajnego klienta

  1. W ustawieniach rejestracji aplikacji wybierz pozycję Certyfikaty i wpisy tajne w obszarze Zarządzaj.

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

  3. W polu Opis wprowadź wartość MyStaticWebApp.

  4. W polu Wygasa pozostaw wartość domyślną 6 miesięcy.

    Uwaga

    Musisz obrócić wpis tajny przed datą wygaśnięcia, generując nowy wpis tajny i aktualizując aplikację przy użyciu jej wartości.

  5. Wybierz Dodaj.

  6. Skopiuj wartość wpisu tajnego klienta utworzonego do edytora tekstów.

    Ta wartość jest potrzebna do skonfigurowania uwierzytelniania usługi Active Directory w statycznej aplikacji internetowej.

    Create a client secret

Konfigurowanie uwierzytelniania usługi Active Directory

  1. W przeglądarce otwórz repozytorium GitHub zawierające wdrożona statyczną aplikację internetową.

    Przejdź do pliku konfiguracji aplikacji w frontonie/staticwebapp.config.json. Ten plik zawiera następującą sekcję:

    "auth": {
      "rolesSource": "/api/GetRoles",
      "identityProviders": {
        "azureActiveDirectory": {
          "userDetailsClaim": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name",
          "registration": {
            "openIdIssuer": "https://login.microsoftonline.com/<YOUR_AAD_TENANT_ID>",
            "clientIdSettingName": "AAD_CLIENT_ID",
            "clientSecretSettingName": "AAD_CLIENT_SECRET"
          },
          "login": {
            "loginParameters": [
              "resource=https://graph.microsoft.com"
            ]
          }
        }
      }
    },
    

    Ta konfiguracja składa się z następujących ustawień:

    Właściwości opis
    rolesSource Adres URL, w którym proces logowania pobiera listę dostępnych ról. W przypadku przykładowej aplikacji adres URL to /api/GetRoles.
    userDetailsClaim Adres URL schematu używanego do weryfikowania żądania logowania.
    openIdIssuer Trasa logowania firmy Microsoft Entra dołączona przy użyciu identyfikatora dzierżawy.
    clientIdSettingName Identyfikator klienta entra firmy Microsoft.
    clientSecretSettingName Wartość wpisu tajnego klienta Entra firmy Microsoft.
    loginParameters Aby uzyskać token dostępu dla programu Microsoft Graph, loginParameters należy skonfigurować pole za pomocą resource=https://graph.microsoft.compolecenia .
  2. Wybierz pozycję Edytuj , aby zaktualizować plik.

  3. Zaktualizuj wartość openIdIssuer wartościhttps://login.microsoftonline.com/<YOUR_AAD_TENANT_ID>, zastępując <YOUR_AAD_TENANT_ID> ciąg identyfikatorem katalogu (dzierżawy) identyfikatora entra firmy Microsoft.

  4. Wybierz pozycję Zatwierdź zmiany....

  5. Wprowadź komunikat zatwierdzenia i wybierz pozycję Zatwierdź zmiany.

    Zatwierdzanie tych zmian inicjuje uruchomienie funkcji GitHub Actions w celu zaktualizowania statycznej aplikacji internetowej.

  6. Przejdź do zasobu statycznej aplikacji internetowej w witrynie Azure Portal.

  7. Wybierz pozycję Konfiguracja na pasku menu.

  8. W sekcji Ustawienia aplikacji dodaj następujące ustawienia:

    Nazwa/nazwisko Wartość
    AAD_CLIENT_ID Identyfikator aplikacji usługi Active Directory (klienta).
    AAD_CLIENT_SECRET Wartość klucza tajnego klienta aplikacji usługi Active Directory.
  9. Wybierz pozycję Zapisz.

Tworzenie ról

  1. Otwórz rejestrację aplikacji usługi Active Directory w witrynie Azure Portal.

  2. W obszarze Zarządzanie wybierz pozycję Role aplikacji.

  3. Wybierz pozycję Utwórz rolę aplikacji i wprowadź następujące wartości:

    Ustawienie Wartość
    Display name Wprowadź wartość admin.
    Dozwolone typy składowych Wybierz pozycję Użytkownicy/grupy.
    Wartość Wprowadź wartość admin.
    opis Wprowadź Administracja istrator.
  4. Zaznacz pole wyboru Czy chcesz włączyć tę rolę aplikacji?

  5. Wybierz Zastosuj.

  6. Teraz powtórz ten sam proces dla roli o nazwie reader.

  7. Skopiuj wartości identyfikatorów dla każdej roli i ustaw je na bok w edytorze tekstów.

Weryfikowanie ról niestandardowych

Przykładowa aplikacja zawiera funkcję interfejsu API (api/GetRoles/index.js), która wysyła zapytanie do programu Microsoft Graph w celu określenia, czy użytkownik znajduje się w wstępnie zdefiniowanej grupie.

Na podstawie członkostwa w grupach użytkownika funkcja przypisuje do użytkownika role niestandardowe. Aplikacja jest skonfigurowana do ograniczania określonych tras na podstawie tych ról niestandardowych.

  1. W repozytorium GitHub przejdź do funkcji GetRoles znajdującej się w lokalizacji api/GetRoles/index.js.

    W górnej części znajduje się roleGroupMappings obiekt, który mapuje niestandardowe role użytkowników na grupy Firmy Microsoft Entra.

  2. Zaznacz Edytuj.

  3. Zaktualizuj obiekt przy użyciu identyfikatorów grup z dzierżawy firmy Microsoft Entra.

    Jeśli na przykład masz grupy z identyfikatorami 6b0b2fff-53e9-4cff-914f-dd97a13bfbd6 i b6059db5-9cef-4b27-9434-bb793aa31805, zaktualizujesz obiekt na:

    const roleGroupMappings = {
      'admin': '6b0b2fff-53e9-4cff-914f-dd97a13bfbd6',
      'reader': 'b6059db5-9cef-4b27-9434-bb793aa31805'
    };
    

    Funkcja GetRoles jest wywoływana za każdym razem, gdy użytkownik zostanie pomyślnie uwierzytelniony przy użyciu identyfikatora Entra firmy Microsoft. Funkcja używa tokenu dostępu użytkownika do wykonywania zapytań dotyczących członkostwa w grupie usługi Active Directory z programu Microsoft Graph. Jeśli użytkownik jest członkiem dowolnych grup zdefiniowanych w roleGroupMappings obiekcie, zwracane są odpowiednie role niestandardowe.

    W powyższym przykładzie, jeśli użytkownik jest członkiem grupy usługi Active Directory o identyfikatorze b6059db5-9cef-4b27-9434-bb793aa31805reader , otrzymuje rolę.

  4. Wybierz pozycję Zatwierdź zmiany....

  5. Dodaj komunikat zatwierdzenia i wybierz pozycję Zatwierdź zmiany.

    Wprowadzenie tych zmian inicjuje kompilację w celu zaktualizowania statycznej aplikacji internetowej.

  6. Po zakończeniu wdrażania możesz zweryfikować zmiany, przechodząc do adresu URL aplikacji.

  7. Zaloguj się do statycznej aplikacji internetowej przy użyciu identyfikatora Entra firmy Microsoft.

  8. Po zalogowaniu przykładowa aplikacja wyświetla listę ról przypisanych na podstawie członkostwa w grupie usługi Active Directory tożsamości.

    W zależności od tych ról użytkownik może uzyskać dostęp do niektórych tras w aplikacji lub jest zabroniony.

Uwaga

Niektóre zapytania względem programu Microsoft Graph zwracają wiele stron danych. Jeśli jest wymagane więcej niż jedno żądanie zapytania, program Microsoft Graph zwraca @odata.nextLink właściwość w odpowiedzi zawierającej adres URL do następnej strony wyników. Aby uzyskać więcej informacji, zobacz stronicowanie danych programu Microsoft Graph w aplikacji

Czyszczenie zasobów

Wyczyść wdrożone zasoby, usuwając grupę zasobów.

  1. W witrynie Azure Portal wybierz pozycję Grupa zasobów z menu po lewej stronie.

  2. Wprowadź nazwę grupy zasobów w polu Filtruj według nazwy.

  3. Wybierz nazwę grupy zasobów używaną w tym samouczku.

  4. Wybierz pozycję Usuń grupę zasobów z górnego menu.

Następne kroki