Dostęp do Graph API przez konto aplikacji – mój wyczerpujący przewodnik
Table of Contents
Microsoft Graph API – kolejne niezwykle użyteczne API, które możesz wykorzystać w automatyzacjach w całym ekosystemie Microsoft 365. Często używam go w procesach Logic Apps, które działają na uprawnieniach aplikacji.
Niedawno napisałem post na blogu o dostępie do API SharePoint z poziomu Logic Apps. Kroki dostępu do Graph API są bardzo podobne. Tutaj ponownie korzystam z Azure Key Vault do przechowywania sekretów i identyfikatorów. Gotowy? Zaczynajmy!
Krok 1 – rejestracja nowej aplikacji w Azure Entra ID
Najpierw musisz zarejestrować aplikację. Aby to zrobić, przejdź do App registration, a następnie kliknij „+ New registration”:
Nadaj aplikacji nazwę. W sekcji Supported account types wybierz „Accounts in this organizational directory only”. Kliknij przycisk „Register”. Aplikacja została utworzona.
Krok 2 – nadanie aplikacji wymaganych uprawnień API
Przejdź do zakładki API permissions. Kliknij „+ Add a permission”:
Wybierz duży przycisk Microsoft Graph:
Następnie wybierz Application permissions. Teraz wybierz uprawnienia, które chcesz nadać aplikacji. Załóżmy, że chcę zbudować aplikację, która będzie miała dostęp do skrzynek pocztowych użytkowników. W takim przypadku muszę przyznać jej co najmniej uprawnienia Mail.ReadBasic.All:
Wybierz uprawnienia, których aplikacja potrzebuje, i kliknij „Add permissions”. Na końcu kliknij opcję Grant admin consent for …. Jeśli nie masz odpowiednich uprawnień, musisz poprosić odpowiedniego administratora. Jeśli masz – gratulacje! Konfiguracja uprawnień API jest gotowa.
Krok 3 – generowanie sekretów
Przejdź do zakładki Certificates & secrets i kliknij „+ New client secret”:
Nadaj sekretowi nazwę i wybierz preferowany czas wygaśnięcia. Następnie skopiuj wartość sekretu – będzie Ci ona potrzebna za chwilę:
Przełącz się również z powrotem na zakładkę Overview aplikacji. Skopiuj Application ID i Directory ID. Te dane również będą Ci potrzebne za moment:
Krok 4 – przechowywanie sekretów w Azure Key Vault
Przejdź do Azure Key Vault. Pamiętaj, że musi znajdować się w tym samym regionie co Logic App, który zamierzasz utworzyć. Albo odwrotnie 😉 W Key Vault przejdź do zakładki Secrets. Następnie kliknij „+ Generate/Import”:
Musisz utworzyć dwa sekrety. Jeden dla Application (Client) ID, drugi dla Client Secret. Nazwij te sekrety, jak chcesz, i wklej odpowiednie wartości, które skopiowałeś w poprzednim kroku, do pól „Secret value”.
Na koniec przejdź do zakładki Access configuration i upewnij się, że Twój Key Vault używa modelu uprawnień Azure role-based access control (RBAC). Jeśli nie, zmień go:
Krok 5 – konfiguracja Logic App
Utwórz nową aplikację Logic App. Wybierz opcję hostingu, która najlepiej odpowiada Twoim potrzebom. Następnie nadaj aplikacji nazwę i pamiętaj – stwórz ją w tym samym regionie co Twój Azure Key Vault.
Po utworzeniu zasobu kliknij przycisk „Go to resource”. Tam otwórz stronę Identity i przełącz status na „On”:
Chwilę później kliknij przycisk Azure role assignments poniżej:
Następnie kliknij przycisk „+ Add role assignment” i ustaw poniższe opcje:
- Scope – Key Vault
- Subscription – ta sama, której używa Twój Key Vault
- Resource – Key Vault
- Role – Key Vault Secrets User
Kliknij „Save”. Wróć do aplikacji.
Krok 6 – projektowanie Logic App
Teraz czas na zbudowanie procesu! Przejdź do designera aplikacji Logic App. Dodaj trigger, jakiego wymaga Twój projekt.
Następnie dodaj akcję Get secret z zestawu akcji Azure Key Vault. Skonfiguruj nowe połączenie (jeśli nie zrobiłeś tego wcześniej):
- Connection Name – zdefiniuj nazwę odpowiednią dla Ciebie,
- Authentication Type – Managed identity,
- Vault Name – nazwa Twojego Azure Key Vault.
Jeśli wszystko skonfigurowałeś poprawnie, po utworzeniu połączenia powinieneś móc wyświetlić wszystkie sekrety znajdujące się w Key Vault.
Utwórz jedną akcję dla Client ID, drugą dla Client Secret. Możesz również zabezpieczyć swoje dane, przechodząc do ustawień akcji i wybierając opcję Secure outputs, aby uniemożliwić dostęp do sekretów w historii wykonanych działań.
Następnie musisz uzyskać token dostępu, aby wykonywać wywołania do Graph API. W tym celu dodaj akcję HTTP i skonfiguruj ją w następujący sposób:
- URI – to będzie
https://login.microsoftonline.com/{Directory ID z Kroku 3}/oauth2/v2.0/token
- Method – POST
- Headers – tylko jeden:
{"Content-Type": "application/x-www-form-urlencoded"}
- Body –
client_id={WARTOŚĆ Z AKCJI GET CLIENT ID}&client_secret={WARTOŚĆ Z AKCJI GET CLIENT SECRET}&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&grant_type=client_credentials
I na koniec – dodaj kolejną akcję HTTP, która wykona właściwe wywołanie do Graph API:
- URI – punkt końcowy, który zamierzasz wywołać,
- Method – w zależności od punktu końcowego,
- Headers – znowu, w zależności od punktu końcowego, ale najważniejsze – dodaj nagłówek Authorization:
{"Authorization": "Bearer @{body('Get_access_token')?['access_token']}"}
- Body – w zależności od punktu końcowego.
Zapisz swój proces. Ponownie otwórz projektanta i kliknij „Run”. Gratulacje! Właśnie utworzyłeś aplikację Logic App, która działa z Graph API, korzystając z uprawnień aplikacji! 🙂