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

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:

  1. Zaloguj się do środowiska Szybki start centrum administracyjnego firmy Microsoft Entra jako co najmniej aplikacja w chmurze Administracja istrator.
  2. Wprowadź nazwę aplikacji i wybierz pozycję Zarejestruj.
  3. 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

  1. Zaloguj się do centrum administracyjnego firmy Microsoft Entra jako co najmniej Administracja istrator aplikacji w chmurze.
  2. 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.
  3. Przejdź do pozycji Identity>Applications> Rejestracje aplikacji i wybierz pozycję Nowa rejestracja.
  4. 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.
  5. Ustaw typ identyfikatora URI przekierowania na Sieć Web i wartość na https://localhost:44368/.
  6. Wybierz pozycję Zarejestruj.
  7. W obszarze Zarządzanie wybierz pozycję Uwierzytelnianie.
  8. W sekcji Niejawne udzielanie i przepływy hybrydowe wybierz pozycję Tokeny identyfikatorów.
  9. 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

  1. 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.

  2. Otwórz rozwiązanie w programie Visual Studio (AppModelv2-WebApp-OpenID Połączenie-DotNet.sln).

  3. 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.

  4. 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.

  5. Edytuj appsettings.json i zastąp parametry , TenantiredirectUri: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.
    • redirectUrito 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

Diagram interakcji między przeglądarką internetową, aplikacją internetową i Platforma tożsamości Microsoft w przykładowej aplikacji.

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.