Samouczek: tworzenie wielodostępnego demona używającego Platforma tożsamości Microsoft
W tym samouczku pobierzesz i uruchomisz aplikację internetową demona ASP.NET, która demonstruje użycie poświadczeń klienta OAuth 2.0 w celu uzyskania tokenu dostępu w celu wywołania interfejsu API programu Microsoft Graph.
W tym samouczku:
- Integrowanie aplikacji demona z Platforma tożsamości Microsoft
- Udzielanie uprawnień aplikacji bezpośrednio do aplikacji przez administratora
- Uzyskiwanie tokenu dostępu w celu wywołania interfejsu API programu Microsoft Graph
- Wywołaj interfejs API programu Microsoft Graph.
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Wymagania wstępne
- Visual Studio 2017 lub 2019.
- Dzierżawa firmy Microsoft Entra. Aby uzyskać więcej informacji, zobacz Jak uzyskać dzierżawę firmy Microsoft Entra.
- Co najmniej jedno konto użytkownika w dzierżawie. Ten przykład nie będzie działać z kontem Microsoft. Jeśli zalogowałeś się przy użyciu konta Microsoft i nigdy nie utworzono konta użytkownika w katalogu, zrób to teraz.
Scenariusz
Aplikacja jest tworzona jako aplikacja ASP.NET MVC. Używa oprogramowania pośredniczącego OWIN OpenID Connect do logowania użytkowników.
Składnik "demona" w tym przykładzie jest kontrolerem interfejsu API. SyncController.cs
Po wywołaniu kontrolera ściąga listę użytkowników w dzierżawie firmy Microsoft Entra klienta z programu Microsoft Graph. SyncController.cs
jest wyzwalane przez wywołanie AJAX w aplikacji internetowej. Używa biblioteki Microsoft Authentication Library (MSAL) dla platformy .NET do uzyskania tokenu dostępu dla programu Microsoft Graph.
Ponieważ aplikacja jest wielodostępną aplikacją dla klientów biznesowych firmy Microsoft, musi zapewnić klientom możliwość "rejestracji" lub "połączenia" aplikacji z danymi firmy. Podczas przepływu połączenia deweloper aplikacji najpierw udziela aplikacji uprawnień bezpośrednio do aplikacji, aby mógł uzyskiwać dostęp do danych firmowych w sposób nieinterakcyjny bez obecności zalogowanego użytkownika. Większość logiki w tym przykładzie pokazuje, jak osiągnąć ten przepływ połączenia przy użyciu punktu końcowego zgody administratora platformy tożsamości.
Aby uzyskać więcej informacji na temat pojęć używanych w tym przykładzie, zapoznaj się z dokumentacją protokołu poświadczeń klienta dla platformy tożsamości.
Klonuj lub pobrać to repozytorium
W powłoce lub wierszu polecenia wprowadź następujące polecenie:
git clone https://github.com/Azure-Samples/active-directory-dotnet-daemon-v2.git
Możesz też pobrać przykład w pliku zip.
Rejestrowanie aplikacji
Ten przykład zawiera jeden projekt. Aby zarejestrować aplikację w dzierżawie firmy Microsoft Entra, możesz wykonać następujące czynności:
- Wykonaj kroki opisane w temacie Wybieranie dzierżawy i Konfigurowanie przykładu do korzystania z dzierżawy.
- Użyj skryptów programu PowerShell, które:
- Automatycznie utwórz aplikacje firmy Microsoft Entra i powiązane obiekty (hasła, uprawnienia, zależności).
- Zmodyfikuj pliki konfiguracji projektów programu Visual Studio.
Jeśli chcesz użyć automatyzacji:
W systemie Windows uruchom program PowerShell i przejdź do katalogu głównego sklonowanego katalogu.
Uruchom następujące polecenie:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force
Uruchom skrypt, aby utworzyć aplikację Microsoft Entra i odpowiednio skonfigurować kod przykładowej aplikacji:
.\AppCreationScripts\Configure.ps1
Inne sposoby uruchamiania skryptów są opisane w temacie Skrypty tworzenia aplikacji.
Otwórz rozwiązanie programu Visual Studio i wybierz pozycję Uruchom , aby uruchomić kod.
Jeśli nie chcesz używać automatyzacji, wykonaj kroki opisane w poniższych sekcjach.
Wybieranie dzierżawy
Napiwek
Kroki opisane w tym artykule mogą się nieznacznie różnić w zależności od portalu, od którego zaczynasz.
Zaloguj się do centrum administracyjnego firmy Microsoft Entra co najmniej jako deweloper aplikacji.
Jeśli masz dostęp do wielu dzierżaw, użyj ikony Ustawienia w górnym menu, aby przełączyć się do dzierżawy, w której chcesz zarejestrować aplikację z menu Katalogi i subskrypcje.
Przejdź do aplikacji tożsamości>> Rejestracje aplikacji.
Wybierz opcjęNowa rejestracja.
Wprowadź nazwę aplikacji, na przykład
dotnet-web-daemon-v2
. Użytkownicy aplikacji mogą zobaczyć tę nazwę i możesz ją zmienić później.W sekcji Obsługiwane typy kont wybierz pozycję Konta w dowolnym katalogu organizacyjnym.
W sekcji Identyfikator URI przekierowania (opcjonalnie) wybierz pozycję Sieć Web w polu kombi i wprowadź
https://localhost:44316/
ihttps://localhost:44316/Account/GrantPermissions
jako identyfikatory URI przekierowania.Jeśli istnieje więcej niż dwa identyfikatory URI przekierowania, musisz dodać je później z karty Uwierzytelnianie po pomyślnym utworzeniu aplikacji.
Wybierz pozycję Zarejestruj, aby utworzyć aplikację.
Na stronie Przegląd aplikacji znajdź wartość Identyfikator aplikacji (klienta) i zapisz ją do późniejszego użycia. Będzie on potrzebny do skonfigurowania pliku konfiguracji programu Visual Studio dla tego projektu.
W obszarze Zarządzanie wybierz pozycję Uwierzytelnianie.
Ustaw adres URL wylogowywania kanału frontonu na
https://localhost:44316/Account/EndSession
.W sekcji Niejawne udzielanie i przepływy hybrydowe wybierz pozycję Tokeny dostępu i tokeny identyfikatorów. Ten przykład wymaga włączenia niejawnego przepływu udzielania w celu zalogowania użytkownika i wywołania interfejsu API.
Wybierz pozycję Zapisz.
W obszarze Zarządzanie wybierz pozycję Certyfikaty i wpisy tajne.
W sekcji Klucze tajne klienta wybierz pozycję Nowy klucz tajny klienta.
Wprowadź opis klucza (na przykład wpis tajny aplikacji).
Wybierz kluczowy czas trwania w ciągu 1 roku, w ciągu 2 lat lub Nigdy nie wygasa.
Wybierz Dodaj. Zapisz wartość klucza w bezpiecznej lokalizacji. Ten klucz będzie potrzebny później do skonfigurowania projektu w programie Visual Studio.
W obszarze Zarządzanie wybierz pozycję Uprawnienia>interfejsu API Dodaj uprawnienie.
W sekcji Często używane interfejsy API firmy Microsoft wybierz pozycję Microsoft Graph.
W sekcji Uprawnienia aplikacji upewnij się, że wybrano odpowiednie uprawnienia: User.Read.All.
Wybierz Przyznaj uprawnienia.
Konfigurowanie przykładu do korzystania z dzierżawy
W poniższych krokach identyfikator ClientID jest taki sam jak "identyfikator aplikacji" lub Identyfikator aplikacji.
Otwórz rozwiązanie w programie Visual Studio, aby skonfigurować projekty.
Konfigurowanie projektu klienta
Jeśli użyto skryptów konfiguracji, zostaną zastosowane następujące zmiany.
- Otwórz plik UserSync\Web.Config.
- Znajdź klucz aplikacji ida:ClientId. Zastąp istniejącą wartość identyfikatorem aplikacji dotnet-web-daemon-v2 , która została wcześniej zarejestrowana.
- Znajdź klucz aplikacji ida:ClientSecret. Zastąp istniejącą wartość kluczem zapisanym podczas tworzenia aplikacji dotnet-web-daemon-v2 .
Uruchamianie aplikacji przykładowej
Wyczyść rozwiązanie, skompiluj rozwiązanie, uruchom aplikację UserSync, a następnie zaloguj się jako administrator w dzierżawie firmy Microsoft Entra. Jeśli nie masz dzierżawy microsoft Entra na potrzeby testowania, możesz wykonać te instrukcje , aby je uzyskać.
Po zalogowaniu aplikacja najpierw prosi o zgodę na zalogowanie się i przeczytanie profilu użytkownika. Ta zgoda umożliwia aplikacji zapewnienie, że jesteś użytkownikiem biznesowym.
Następnie aplikacja próbuje zsynchronizować listę użytkowników z dzierżawy firmy Microsoft Entra za pośrednictwem programu Microsoft Graph. Jeśli nie może, zostanie wyświetlony monit o połączenie dzierżawy z aplikacją (administrator dzierżawy).
Następnie aplikacja prosi o uprawnienie do odczytu listy użytkowników w dzierżawie.
Po udzieleniu uprawnień użytkownik jest wylogowany z aplikacji. To wylogowanie gwarantuje, że wszystkie istniejące tokeny dostępu dla programu Microsoft Graph zostaną usunięte z pamięci podręcznej tokenów. Po ponownym zalogowaniu nowy token uzyskany będzie miał niezbędne uprawnienia do wykonywania wywołań do programu Microsoft Graph.
Po udzieleniu uprawnienia aplikacja może następnie wysyłać zapytania do użytkowników w dowolnym momencie. Możesz to sprawdzić, wybierając przycisk Synchronizuj użytkowników i odświeżając listę użytkowników. Spróbuj dodać lub usunąć użytkownika i ponownie zsynchronizować listę. (Należy jednak pamiętać, że aplikacja synchronizuje tylko pierwszą stronę użytkowników).
Informacje o kodzie
Odpowiedni kod dla tego przykładu znajduje się w następujących plikach:
- App_Start\Startup.Auth.cs, Controllers\AccountController.cs: Logowanie początkowe. W szczególności akcje na kontrolerze mają atrybut Autoryzuj , co wymusza logowanie użytkownika. Aplikacja używa przepływu kodu autoryzacji do logowania użytkownika.
- Controllers\SyncController.cs: Synchronizowanie listy użytkowników z lokalnym magazynem w pamięci.
- Controllers\UserController.cs: Wyświetlanie listy użytkowników z lokalnego magazynu w pamięci.
- Controllers\AccountController.cs: Uzyskiwanie uprawnień od administratora dzierżawy przy użyciu punktu końcowego zgody administratora.
Ponowne tworzenie przykładowej aplikacji
- W programie Visual Studio utwórz nowy projekt aplikacji internetowej programu Visual C# ASP.NET (.NET Framework).
- Na następnym ekranie wybierz szablon projektu MVC . Dodaj również odwołania do folderu i podstawowego interfejsu API sieci Web, ponieważ później dodasz kontroler internetowego interfejsu API. Pozostaw wybrany tryb uwierzytelniania projektu jako domyślny: Brak uwierzytelniania.
- Wybierz projekt w oknie Eksplorator rozwiązań i wybierz klucz F4.
- We właściwościach projektu ustaw wartość SSL Enabled na True. Zanotuj informacje w adresie URL protokołu SSL. Będzie ona potrzebna podczas konfigurowania rejestracji tej aplikacji w witrynie Azure Portal.
- Dodaj następujące pakiety NuGet oprogramowania pośredniczącego OWIN ASP.NET:
- Microsoft.Owin.Security.ActiveDirectory
- Microsoft.Owin.Security.Cookies
- Microsoft.Owin.Host.SystemWeb
- Microsoft.IdentityModel.Protocol.Extensions
- Microsoft.Owin.Security.OpenIdConnect
- Microsoft.Identity.Client
- W folderze App_Start :
- Utwórz klasę o nazwie Startup.Auth.cs.
- Usuń element . App_Start z nazwy przestrzeni nazw.
- Zastąp kod klasy Startup kodem z tego samego pliku przykładowej aplikacji. Pamiętaj, aby podjąć definicję całej klasy. Definicja zmienia się z klasy publicznej Startup na publiczną klasę częściową Startup.
- W Startup.Auth.cs rozwiąż brakujące odwołania, dodając instrukcje using zgodnie z sugestią funkcji IntelliSense programu Visual Studio.
- Kliknij prawym przyciskiem myszy projekt, wybierz pozycję Dodaj, a następnie wybierz pozycję Klasa.
- W polu wyszukiwania wprowadź OWIN. Klasa startowa OWIN jest wyświetlana jako wybór. Wybierz ją i nadaj jej nazwę Startup.cs.
- W Startup.cs zastąp kod klasy Startup kodem z tego samego pliku przykładowej aplikacji. Ponownie należy pamiętać, że definicja zmienia się z klasy publicznej Startup na publiczną klasę częściową Startup.
- W folderze Models dodaj nową klasę o nazwie MsGraphUser.cs. Zastąp implementację zawartością pliku o tej samej nazwie z przykładu.
- Dodaj nowy kontroler MVC 5 — puste wystąpienie o nazwie AccountController. Zastąp implementację zawartością pliku o tej samej nazwie z przykładu.
- Dodaj nowy kontroler MVC 5 — puste wystąpienie o nazwie UserController. Zastąp implementację zawartością pliku o tej samej nazwie z przykładu.
- Dodaj nowy kontroler internetowego interfejsu API 2 — puste wystąpienie o nazwie SyncController. Zastąp implementację zawartością pliku o tej samej nazwie z przykładu.
- W przypadku interfejsu użytkownika w folderze Views\Account dodaj trzy puste (bez modelu) wystąpienia widoków o nazwach GrantPermissions, Index i UserMismatch. Dodaj i jeden o nazwie Index w folderze Views\User . Zastąp implementację zawartością pliku o tej samej nazwie z przykładu.
- Zaktualizuj Shared_Layout.cshtml i Home\Index.cshtml , aby poprawnie połączyć różne widoki.
Wdrażanie przykładu na platformie Azure
Ten projekt zawiera projekty aplikacji internetowej i internetowego interfejsu API. Aby wdrożyć je w witrynach internetowych platformy Azure, wykonaj następujące kroki dla każdego z nich:
- Tworzenie witryny internetowej platformy Azure.
- Publikowanie aplikacji internetowej i internetowych interfejsów API w witrynie internetowej.
- Zaktualizuj klientów, aby wywołali witrynę internetową zamiast usług IIS Express.
Tworzenie i publikowanie pliku dotnet-web-daemon-v2 w witrynie internetowej platformy Azure
- Zaloguj się w witrynie Azure Portal.
- W lewym górnym rogu wybierz pozycję Utwórz zasób.
- Wybierz pozycję Web App (Aplikacja internetowa),>a następnie nadaj swojej witrynie internetowej nazwę. Na przykład nadaj jej nazwę dotnet-web-daemon-v2-contoso.azurewebsites.net.
- Wybierz informacje dotyczące subskrypcji, grupy zasobów i planu i lokalizacji usługi App Service. System operacyjny to Windows, a publikowanie to Kod.
- Wybierz pozycję Utwórz i poczekaj na utworzenie usługi app Service.
- Po otrzymaniu powiadomienia Wdrożenie zakończyło się pomyślnie , wybierz pozycję Przejdź do zasobu , aby przejść do nowo utworzonej usługi app Service.
- Po utworzeniu witryny internetowej znajdź ją na pulpicie nawigacyjnym i wybierz ją, aby otworzyć ekran Przegląd usługi App Service.
- Na karcie Przegląd usługi App Service pobierz profil publikowania, wybierając link Pobierz profil publikowania i zapisz go. Można użyć innych mechanizmów wdrażania, takich jak wdrażanie z kontroli źródła.
- Przejdź do programu Visual Studio, a następnie:
- Przejdź do projektu dotnet-web-daemon-v2 .
- Kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań, a następnie wybierz pozycję Publikuj.
- Wybierz pozycję Importuj profil na dolnym pasku i zaimportuj pobrany wcześniej profil publikowania.
- Wybierz Konfiguruj.
- Na karcie Połączenie zaktualizuj docelowy adres URL, aby używał "https". Na przykład użyj polecenia
https://dotnet-web-daemon-v2-contoso.azurewebsites.net
. Wybierz Dalej. - Na karcie Ustawienia upewnij się, że opcja Włącz uwierzytelnianie organizacyjne jest wyczyszczone.
- Wybierz pozycję Zapisz. Wybierz pozycję Publikuj na ekranie głównym.
Program Visual Studio opublikuje projekt i automatycznie otworzy przeglądarkę pod adresem URL projektu. Jeśli zostanie wyświetlona domyślna strona internetowa projektu, publikacja zakończyła się pomyślnie.
Aktualizowanie rejestracji aplikacji dzierżawy firmy Microsoft Entra dla aplikacji dotnet-web-daemon-v2
- Wróć do centrum administracyjnego firmy Microsoft Entra, a następnie wybierz aplikację dotnet-web-daemon-v2 w Rejestracje aplikacji.
- Na stronie Uwierzytelnianie aplikacji zaktualizuj pola Adres URL wylogowywania kanału frontonu przy użyciu adresu usługi. Użyj na przykład nazwy
https://dotnet-web-daemon-v2-contoso.azurewebsites.net/Account/EndSession
. - Z menu Branding (Znakowanie) zaktualizuj adres URL strony głównej do adresu usługi. Użyj na przykład nazwy
https://dotnet-web-daemon-v2-contoso.azurewebsites.net
. - Zapisz konfigurację.
- Dodaj ten sam adres URL na liście wartości menu Identyfikatory URI przekierowania uwierzytelniania>. Jeśli masz wiele adresów URL przekierowania, upewnij się, że istnieje nowy wpis, który używa identyfikatora URI usługi App Service dla każdego adresu URL przekierowania.
Czyszczenie zasobów
Gdy obiekt aplikacji utworzony w kroku Rejestrowanie aplikacji nie będzie już potrzebny, usuń go. Aby usunąć aplikację, postępuj zgodnie z instrukcjami w temacie Usuwanie aplikacji utworzonej przez Ciebie lub Twoją organizację.
Uzyskaj pomoc
Użyj pytań i odpowiedzi firmy Microsoft, aby uzyskać pomoc techniczną od społeczności.
Najpierw zadawaj pytania dotyczące pytań i odpowiedzi na pytania firmy Microsoft, a następnie przeglądaj istniejące problemy, aby sprawdzić, czy ktoś zadał pytanie wcześniej.
Upewnij się, że pytania lub komentarze są oznaczone tagiem azure-ad-adal-deprecation
, azure-ad-msal
i dotnet-standard
."
Jeśli znajdziesz usterkę w przykładzie, zgłoś problem w problemach z usługą GitHub.
Jeśli znajdziesz usterkę w MSAL.NET, zgłoś problem w MSAL.NET problemy z usługą GitHub.
Aby podać zalecenie, przejdź do strony User Voice (Głos użytkownika).
Następne kroki
Dowiedz się więcej o tworzeniu aplikacji demona, które używają Platforma tożsamości Microsoft do uzyskiwania dostępu do chronionych internetowych interfejsów API: