Szybki start: logowanie użytkowników i wywoływanie interfejsu API programu Microsoft Graph z aplikacji internetowej ASP.NET
W tym przewodniku Szybki start pobierzesz i uruchomisz przykładowy kod, który demonstruje aplikację internetową ASP.NET, która może logować użytkowników przy użyciu kont Microsoft Entra.
Zobacz Jak działa przykład, aby zapoznać się z ilustracją.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Visual Studio 2022
- .NET Framework 4.7.2+
Rejestrowanie i pobieranie aplikacji
Napiwek
Kroki opisane w tym artykule mogą się nieznacznie różnić w zależności od portalu, od którego zaczynasz.
Dostępne są dwie opcje rozpoczęcia tworzenia aplikacji: automatyczna lub ręczna konfiguracja.
Automatyczna konfiguracja
Jeśli chcesz automatycznie skonfigurować aplikację, a następnie pobrać przykładowy kod, wykonaj następujące kroki:
- Zaloguj się do środowiska Szybki start centrum administracyjnego firmy Microsoft Entra jako co najmniej aplikacja w chmurze Administracja istrator.
- Wprowadź nazwę aplikacji i wybierz pozycję Zarejestruj.
- Postępuj zgodnie z instrukcjami, aby pobrać i automatycznie skonfigurować nową aplikację za pomocą jednego kliknięcia.
Konfiguracja ręczna
Jeśli chcesz ręcznie skonfigurować aplikację i przykładowy kod, skorzystaj z poniższych procedur.
Krok 1. Rejestrowanie aplikacji
- Zaloguj się do centrum administracyjnego firmy Microsoft Entra jako co najmniej Administracja istrator aplikacji w chmurze.
- Jeśli masz dostęp do wielu dzierżaw, użyj ikonyUstawienia w górnym menu, aby przełączyć się do dzierżawy, w której chcesz zarejestrować aplikację z menu Katalogi i subskrypcje.
- Przejdź do pozycji Identity>Applications> Rejestracje aplikacji i wybierz pozycję Nowa rejestracja.
- W polu Nazwa wprowadź nazwę aplikacji. Na przykład wprowadź ciąg ASPNET-Quickstart. Użytkownicy aplikacji będą widzieć tę nazwę i możesz ją zmienić później.
- Ustaw typ identyfikatora URI przekierowania na Sieć Web i wartość na
https://localhost:44368/
. - Wybierz pozycję Zarejestruj.
- W obszarze Zarządzanie wybierz pozycję Uwierzytelnianie.
- W sekcji Niejawne udzielanie i przepływy hybrydowe wybierz pozycję Tokeny identyfikatorów.
- Wybierz pozycję Zapisz.
Krok 2. Pobieranie projektu
Pobieranie przykładu kodu ASP.NET
Napiwek
Aby uniknąć błędów spowodowanych ograniczeniami długości ścieżki w systemie Windows, zalecamy wyodrębnienie archiwum lub sklonowanie repozytorium do katalogu w pobliżu katalogu głównego dysku.
Krok 3. Uruchamianie projektu
Wyodrębnij plik .zip do folderu lokalnego, który znajduje się w pobliżu folderu głównego. Na przykład wyodrębnij do folderu C:\Azure-Samples.
Zalecamy wyodrębnienie archiwum do katalogu w pobliżu katalogu głównego dysku, aby uniknąć błędów spowodowanych ograniczeniami długości ścieżki w systemie Windows.
Otwórz rozwiązanie w programie Visual Studio (AppModelv2-WebApp-OpenID Połączenie-DotNet.sln).
W zależności od wersji programu Visual Studio może być konieczne kliknięcie prawym przyciskiem myszy projektu AppModelv2-WebApp-OpenID Połączenie-DotNet, a następnie wybranie pozycji Przywróć pakiety NuGet.
Otwórz konsolę Menedżer pakietów, wybierając pozycję Wyświetl>inne okna> Menedżer pakietów Konsola. Następnie należy uruchomić polecenie
Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r
.Edytuj appsettings.json i zastąp parametry ,
Tenant
iredirectUri
:ClientId
"ClientId" :"Enter_the_Application_Id_here" /> "TenantId": "Enter_the_Tenant_Info_Here" /> "RedirectUri" :"https://localhost:44368/" />
W tym kodzie:
Enter_the_Application_Id_here
to identyfikator aplikacji (klienta) utworzonej wcześniej rejestracji aplikacji. Znajdź identyfikator aplikacji (klienta) na stronie Przegląd aplikacji w Rejestracje aplikacji w centrum administracyjnym firmy Microsoft Entra.Enter_the_Tenant_Info_Here
jest jedną z następujących opcji:- Jeśli aplikacja obsługuje tylko moją organizację, zastąp tę wartość identyfikatorem katalogu (dzierżawy) lub nazwą dzierżawy (na przykład
contoso.onmicrosoft.com
). Znajdź identyfikator katalogu (dzierżawy) na stronie Przegląd aplikacji w Rejestracje aplikacji w centrum administracyjnym firmy Microsoft Entra. - Jeśli aplikacja obsługuje konta w dowolnym katalogu organizacyjnym, zastąp tę wartość wartością
organizations
. - Jeśli aplikacja obsługuje wszystkich użytkowników konta Microsoft, zastąp tę wartość wartością
common
.
- Jeśli aplikacja obsługuje tylko moją organizację, zastąp tę wartość identyfikatorem katalogu (dzierżawy) lub nazwą dzierżawy (na przykład
redirectUri
to identyfikator URI przekierowania wprowadzony wcześniej w Rejestracje aplikacji w centrum administracyjnym firmy Microsoft Entra.
Więcej informacji
Ta sekcja zawiera omówienie kodu wymaganego do logowania użytkowników. To omówienie może być przydatne, aby zrozumieć, jak działa kod, jakie są główne argumenty i jak dodać logowanie do istniejącej aplikacji ASP.NET.
Jak działa przykład
Pakiety NuGet oprogramowania pośredniczącego OWIN
Potok uwierzytelniania można skonfigurować przy użyciu uwierzytelniania opartego na plikach cookie przy użyciu Połączenie OpenID w ASP.NET z pakietami oprogramowania pośredniczącego OWIN. Te pakiety można zainstalować, uruchamiając następujące polecenia w konsoli Menedżer pakietów w programie Visual Studio:
Install-Package Microsoft.Identity.Web.Owin
Install-Package Microsoft.Identity.Web.GraphServiceClient
Install-Package Microsoft.Owin.Security.Cookies
Klasa uruchamiania OWIN
Oprogramowanie pośredniczące OWIN używa klasy uruchamiania uruchamianej podczas uruchamiania procesu hostingu. W tym przewodniku Szybki start plik startup.cs znajduje się w folderze głównym. Poniższy kod przedstawia parametry używane w tym przewodniku Szybki start:
public void Configuration(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
OwinTokenAcquirerFactory factory = TokenAcquirerFactory.GetDefaultInstance<OwinTokenAcquirerFactory>();
app.AddMicrosoftIdentityWebApp(factory);
factory.Services
.Configure<ConfidentialClientApplicationOptions>(options => { options.RedirectUri = "https://localhost:44368/"; })
.AddMicrosoftGraph()
.AddInMemoryTokenCaches();
factory.Build();
}
Gdzie | opis |
---|---|
ClientId |
Identyfikator aplikacji z aplikacji zarejestrowanej w witrynie Azure Portal. |
Authority |
Punkt końcowy usługi tokenu zabezpieczającego (STS) dla użytkownika do uwierzytelniania. Zwykle jest to https://login.microsoftonline.com/{tenant}/v2.0 chmura publiczna. W tym adresie URL {tenant} jest nazwą dzierżawy, identyfikatorem dzierżawy lub common odwołaniem do wspólnego punktu końcowego. (Wspólny punkt końcowy jest używany dla aplikacji wielodostępnych). |
RedirectUri |
Adres URL, pod którym użytkownicy są wysyłani po uwierzytelnieniu względem Platforma tożsamości Microsoft. |
PostLogoutRedirectUri |
Adres URL, pod którym użytkownicy są wysyłani po wylogowaniu. |
Scope |
Lista żądanych zakresów oddzielona spacjami. |
ResponseType |
Żądanie odpowiedzi z uwierzytelniania zawiera kod autoryzacji i token identyfikatora. |
TokenValidationParameters |
Lista parametrów na potrzeby weryfikacji tokenu. W takim przypadku jest ustawiona wartość , aby false wskazać, ValidateIssuer że może zaakceptować logowania z dowolnego typu konta osobistego, służbowego lub szkolnego. |
Notifications |
Lista delegatów, które mogą być uruchamiane na OpenIdConnect komunikatach. |
Wyzwanie dotyczące uwierzytelniania
Możesz wymusić logowanie użytkownika, wysyłając żądanie uwierzytelnienia w kontrolerze:
public void SignIn()
{
if (!Request.IsAuthenticated)
{
HttpContext.GetOwinContext().Authentication.Challenge(
new AuthenticationProperties{ RedirectUri = "/" },
OpenIdConnectAuthenticationDefaults.AuthenticationType);
}
}
Napiwek
Żądanie żądania uwierzytelnienia przy użyciu tej metody jest opcjonalne. Zwykle należy używać go, gdy widok ma być dostępny zarówno dla uwierzytelnionych, jak i nieuwierzytelnionych użytkowników. Innym rozwiązaniem jest ochrona kontrolerów przy użyciu metody opisanej w następnej sekcji.
Atrybut do ochrony kontrolera lub akcji kontrolera
Za pomocą atrybutu [Authorize]
można chronić akcje kontrolera lub kontrolera. Ten atrybut ogranicza dostęp do kontrolera lub akcji, zezwalając tylko uwierzytelnieni użytkownicy na dostęp do akcji w kontrolerze. Zadanie uwierzytelnienia nastąpi automatycznie, gdy nieuwierzytelniony użytkownik próbuje uzyskać dostęp do jednej z akcji lub kontrolerów ozdobionych przez [Authorize]
atrybut .
Wywoływanie programu Microsoft Graph z kontrolera
Program Microsoft Graph można wywołać z kontrolera, uzyskując wystąpienie programu GraphServiceClient przy użyciu GetGraphServiceClient
metody rozszerzenia na kontrolerze, podobnie jak w poniższym kodzie:
try
{
var me = await this.GetGraphServiceClient().Me.GetAsync();
ViewBag.Username = me.DisplayName;
}
catch (ServiceException graphEx) when (graphEx.InnerException is MicrosoftIdentityWebChallengeUserException)
{
HttpContext.GetOwinContext().Authentication.Challenge(OpenIdConnectAuthenticationDefaults.AuthenticationType);
return View();
}
Pomoc i obsługa techniczna
Jeśli potrzebujesz pomocy, chcesz zgłosić problem lub poznać opcje pomocy technicznej, zobacz Pomoc i obsługa techniczna dla deweloperów.
Następne kroki
Aby uzyskać kompletny przewodnik krok po kroku dotyczący tworzenia aplikacji i nowych funkcji, w tym pełne wyjaśnienie tego przewodnika Szybki start, wypróbuj samouczek ASP.NET.