Dostęp do SharePoint API przez konto aplikacji – mój wyczerpujący przewodnik
Table of Contents
Zmagałem się z tym tematem przez jakiś czas. Prawie za każdym razem, gdy miałem pracować z API SharePoint w Power Apps lub Logic Apps, musiałem szukać rozwiązania w Google i przeglądać te same częściowe odpowiedzi.
Na końcu okazywało się, że brakowało jakiegoś kluczowego elementu lub że mimo wszystko to nie działa. Dlatego zdecydowałem się napisać ten post, aby pomóc sobie w przyszłości, a może i Tobie również! Zaczynajmy. W moim rozwiązaniu będę używać Azure Key Vault do przechowywania ważnych sekretów.
Krok 1 – generowanie nowego certyfikatu samopodpisanego w Azure Key Vault
Będąc w Azure Key Vault, przejdź do zakładki Certificates i kliknij przycisk „Generate/Import”:
Następnie nadaj mu nazwę, którą zapamiętasz, a w polu „Subject” wpisz: CN=sharepoint.com. Możesz ustawić dodatkowe opcje w zależności od potrzeb:
Gdy certyfikat zostanie oznaczony jako „Completed”, kliknij na jego nazwę:
Następnie na najnowszą wersję, czyli bieżącą wersję:
I stamtąd kliknij „Download in CER format”. Zapisz go gdzieś, bo będzie potrzebny później 😉
Następnie przejdź do „Access configuration” Key Vault i zmień model uprawnień na Azure role-based access control (RBAC) – będzie to istotne później:
Krok 2 – rejestracja aplikacji w Azure Entra ID
Teraz przejdź do Azure Entra ID i zarejestruj nową aplikację:
Nadaj jej nazwę i wybierz opcję „Accounts in this organizational directory only”. Następnie kliknij „Register”. Po zarejestrowaniu aplikacji, przejdź do strony Certificate & secrets:
Przełącz się na zakładkę Certificates i kliknij „Upload certificate”:
Wybierz plik *.cer, który pobrałeś w poprzednim kroku. Dodaj opis i kliknij „Add”:
Krok 3 – nadanie uprawnień API
Teraz musisz zdefiniować, jakie uprawnienia będzie miała aplikacja. Przejdź do zakładki API permissions i kliknij „+ Add permission”:
Ponieważ ten post dotyczy dostępu do SharePoint, skupimy się na nadaniu aplikacji uprawnień do SharePoint. Wybierz z API: SharePoint:
Następnie Application permissions, a potem w zależności od tego, co aplikacja będzie musiała robić. Jeśli tylko odczyt – nadaj uprawnienie Sites.Read.All, jeśli więcej – wybierz odpowiednie. Ja nadaję mojej aplikacji Sites.FullControl.All:
Gdy już nadasz te uprawnienia, musisz udzielić zgody administratora w imieniu całej organizacji. Jeśli masz odpowiednie uprawnienia – świetnie. Jeśli nie, musisz znaleźć odpowiedniego admina, który to zatwierdzi:
Po udzieleniu zgody:
Krok 4 – utworzenie Logic App
Teraz utwórz nową aplikację Logic App. Wybierz opcję hostingu, która najlepiej odpowiada Twoim potrzebom. Następnie nadaj jej nazwę i wybierz region. Pamiętaj, że region MUSI BYĆ TEN SAM, CO AZURE KEY VAULT. Po utworzeniu aplikacji Logic App, przejdź do zasobu. Rozwiń „Settings” i przejdź do „Identity”. Przełącz status na „On” (i zapisz):
Odczekaj chwilę, a następnie kliknij przycisk „Azure role assignments”:
Następnie kliknij „Add role assignment” i ustaw poniższe wartości:
- Scope – Key Vault
- Subscription – subskrypcja, pod którą utworzyłeś Key Vault w kroku 1
- Resource – utworzony Key Vault
- Role – Key Vault Certificate User
I kliknij „Save”.
Wróć do szczegółów aplikacji Logic App i przejdź do Designer! Zbudujmy proces! 🙂
Krok 5 – budowanie procesu
Po umieszczeniu akcji wyzwalacza, dodaj akcję „Get secret” z zestawu akcji Azure Key Vault. Następnie skonfiguruj połączenie. W polu „Authentication Type” wybierz Managed identity:
Następnie nazwij połączenie i wpisz nazwę Key Vault z kroku 1 😉 Wybierz certyfikat, który utworzyłeś w kroku 1:
Teraz dodaj akcję „HTTP” i skonfiguruj ją w następujący sposób:
- URI – to adres URL witryny i punkt końcowy API SharePoint + dowolne parametry OData.
- Method – w zależności od metody.
- Headers – w zależności od metody. Dla GET potrzebujesz tylko nagłówka Accept. Dla POST również Content-Type i innych.
- Body – czasami podczas wykonywania żądań POST, tutaj umieszczasz treść żądania.
- Advanced parameters – wybierz Authentication.
- Authentication – wybierz Active Directory OAuth.
- Tenant – GUID reprezentujący ID tenanta. Możesz go znaleźć na stronie „Overview” w Azure Entra ID:
- Audience – Twój URL SharePoint, np. https://poszytek.sharepoint.com.
- Client ID – ID aplikacji zarejestrowanej w kroku 2. Wartość znajdziesz na stronie „Overview” zarejestrowanej aplikacji:
- Credential Type – przełącz na Certificate
- Pfx – wartość z akcji „Get secret”.
Step 6 – testy!
Po wykonaniu wszystkich kroków czas zapisać swoją aplikację Logic App i ją przetestować. Kliknij „Save”, odśwież projektanta, a następnie kliknij „Run”! I voilà! Gratulacje! Udało się!