Rychlý start: ASP.NET Core aplikace, která přihlásí uživatele a volá Graph microsoftu jejich jménem

V tomto rychlém startu si stáhnete a spustíte vzorový kód, který ukazuje, jak může webová aplikace ASP.NET Core přihlásit uživatele z libovolné organizace Azure Active Directory (Azure AD) a volat microsoft Graph.

Obrázek najdete v článku Jak ukázka funguje.

Požadavky

Krok 1: Registrace aplikace

Pokud chcete zaregistrovat aplikaci a ručně přidat informace o registraci aplikace ke svému řešení, postupujte následovně:

  1. Přihlaste se k webu Azure Portal.
  2. Pokud máte přístup k více tenantům, pomocí filtru Adresáře a předplatná v horní nabídce přepněte na tenanta, ve kterém chcete aplikaci zaregistrovat.
  3. Vyhledejte a vyberte Azure Active Directory.
  4. V částiSpravovat vyberte Registrace aplikacíNová registrace.
  5. Zadejte Název vaší aplikace, například . Uživatelé vaší aplikace můžou tento název vidět a později ho můžete změnit.
  6. Zadejte identifikátor URI přesměrování .
  7. Vyberte Zaregistrovat.
  8. V částiSpravovat vyberte Ověřování.
  9. Zadejte adresu URL pro odhlášení front-channelu.
  10. Vyberte Uložit.
  11. V části Spravovatvyberte Tajné kódy certifikátůTajné kódy klientaNový tajný klíč klienta.
  12. Zadejte Popis,například .
  13. Pro vypršení platnosti tajného klíče vyberte V 1 roce.
  14. Vyberte Přidat a hned si zaznamenate hodnotu tajného klíče pro pozdější použití. Hodnota tajného klíče se už nikdy nezobrazí a není možné ji opakovat žádným jiným způsobem. Stejně jako jakékoli heslo si ho zaznamenate na bezpečném místě.

Krok 1: Konfigurace aplikace v Azure Portal

Aby vzorový kód v tomto rychlém startu fungoval, přidejte v registraci aplikace identifikátor URI přesměrování a adresu URL pro odhlášení front-channel.

Already configured Vaše aplikace je nakonfigurovaná s těmito atributy.

Krok 2: Stažení ASP.NET Core projektu

Spusťte projekt.

Tip

Pokud se chcete vyhnout chybám způsobeným omezením délky cest v Windows, doporučujeme extrahovat archiv nebo naklonovat úložiště do adresáře v blízkosti kořenového adresáře jednotky.

Krok 3: Vaše aplikace je nakonfigurovaná a připravená ke spuštění

Nakonfigurovali jsme váš projekt s hodnotami vlastností vaší aplikace a je připravený ke spuštění.

Poznámka

Enter_the_Supported_Account_Info_Here

Krok 3: Konfigurace ASP.NET Core projektu

  1. Extrahujte .zip do místní složky v blízkosti kořenového adresáře jednotky. Například do složky C:\Azure-Samples.

  2. Otevřete řešení v Visual Studio 2019.

  3. Otevřete soubor appsettings.json a upravte následující:

    "ClientId": "Enter_the_Application_Id_here",
    "TenantId": "common",
    "clientSecret": "Enter_the_Client_Secret_Here"
    
    • Enter_the_Application_Id_hereNahraďte Enter_the_Application_Id_here kterou jste zaregistrovali v Azure Portal. ID aplikace (klienta) najdete na stránce Přehled aplikace.
    • Nahraďte common jedním z následujících textů:
      • Pokud vaše aplikace podporujejenom účty v tomto organizačním adresáři, nahraďte tuto hodnotu ID adresáře (tenanta) (GUID) nebo názvem tenanta (například ). ID adresáře (tenanta) najdete na stránce Přehled aplikace.
      • Pokud vaše aplikace podporuje režim Účty v libovolném organizačním adresáři, nahraďte tuto hodnotu za .
      • Pokud vaše aplikace podporuje všechny účet Microsoft uživatele,ponechte tuto hodnotu jako .
    • Enter_the_Client_Secret_HereNahraďte Enter_the_Client_Secret_Here který jste vytvořili a zaznamenali v předchozím kroku.

V tomto rychlém startu neměňte žádné jiné hodnoty v souboru appsettings.json.

Krok 4: Sestavení a spuštění aplikace

Sestavte a spusťte aplikaci v Visual Studio výběrem nabídky Ladit Spustit laděnínebo stisknutím klávesy .

Zobrazí se výzva k zadání přihlašovacích údajů a výzva k potvrzení souhlasu s oprávněními, která vaše aplikace vyžaduje. Na příkazovém řádku pro udělení souhlasu vyberte Přijmout.

Consent dialog showing the permissions the app is requesting from the > user

Po souhlasu s požadovanými oprávněními aplikace zobrazí, že jste se úspěšně přihlásili pomocí svých přihlašovacích údajů Azure Active Directory, a v části Výsledek rozhraní API na stránce se zobrazí vaše e-mailová adresa. Tento soubor byl extrahován pomocí služby Microsoft Graph.

Web browser displaying the running web app and the user signed in

Informace o kódu

Tato část obsahuje přehled kódu potřebného k přihlášení uživatelů a volání rozhraní API služby Microsoft Graph jejich jménem. Tento přehled může být užitečný k pochopení toho, jak kód funguje, hlavní argumenty a také pokud chcete přidat přihlášení do existující aplikace ASP.NET Core a volat Microsoft Graph. Používá Microsoft.Identity.Web,což je obálka kolem MSAL.NET.

Jak ukázka funguje

Shows how the sample app generated by this quickstart works

Startup – třída

Middleware Microsoft.AspNetCore.Authentication používá třídu, která se spustí při inicializaci hostitelského procesu:

  // Get the scopes from the configuration (appsettings.json)
  var initialScopes = Configuration.GetValue<string>("DownstreamApi:Scopes")?.Split(' ');

  public void ConfigureServices(IServiceCollection services)
  {
      // Add sign-in with Microsoft
      services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
        .AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"))

            // Add the possibility of acquiring a token to call a protected web API
            .EnableTokenAcquisitionToCallDownstreamApi(initialScopes)

                // Enables controllers and pages to get GraphServiceClient by dependency injection
                // And use an in memory token cache
                .AddMicrosoftGraph(Configuration.GetSection("DownstreamApi"))
                .AddInMemoryTokenCaches();

      services.AddControllersWithViews(options =>
      {
          var policy = new AuthorizationPolicyBuilder()
              .RequireAuthenticatedUser()
              .Build();
          options.Filters.Add(new AuthorizeFilter(policy));
      });

      // Enables a UI and controller for sign in and sign out.
      services.AddRazorPages()
          .AddMicrosoftIdentityUI();
  }

Metoda nakonfiguruje službu tak, aby při přidání ověřování na základě souborů cookie, které se používá ve scénářích prohlížeče, a nastavila výzvu na AddAuthentication() OpenID Připojení.

Řádek, který .AddMicrosoftIdentityWebApp obsahuje , přidá Microsoft identity platform ověřování do vaší aplikace. To poskytuje Microsoft.Identity.Web. Potom se na základě informací v části konfiguračního souboru appsettings.json nakonfiguruje tak, aby se Microsoft identity platform pomocí AzureADAzureAD údajů:

klíč appsettings.json Popis
ClientId ID aplikace (klienta) aplikace zaregistrované v Azure Portal.
Instance Koncový bod služby tokenů zabezpečení (STS), aby se uživatel ověřil. Tato hodnota je obvykle https://login.microsoftonline.com/ , což označuje veřejný cloud Azure.
TenantId Název vašeho tenanta nebo jeho ID tenanta (GUID) nebo běžný pro přihlašování uživatelů pomocí pracovních nebo školních účtů nebo osobních účtů Microsoft.

Metoda EnableTokenAcquisitionToCallDownstreamApi umožňuje aplikaci získat token pro volání chráněných webových rozhraní API. AddMicrosoftGraph umožňuje kontrolerům nebo stránkám Razor Pages přímo využívat výhod (injektáží závislostí) a metody umožňují vaší aplikaci využívat mezipaměť GraphServiceClientAddInMemoryTokenCaches tokenů.

Metoda Configure() obsahuje dvě důležité metody , a , které umožňují app.UseAuthentication()app.UseAuthorization() pojmenovanou funkci. V metodě musíte také zaregistrovat trasy webu Microsoft Identity Web alespoň jedním voláním metody Configure()endpoints.MapControllerRoute() nebo voláním metody endpoints.MapControllers() .

app.UseAuthentication();
app.UseAuthorization();

app.UseEndpoints(endpoints =>
{

    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
    endpoints.MapRazorPages();
});

// endpoints.MapControllers(); // REQUIRED if MapControllerRoute() isn't called.

Ochrana řadiče nebo akcí řadiče

Kontroler nebo jeho metody můžete chránit použitím atributu na třídu kontroleru nebo na jednu nebo [Authorize] více jeho metod. Tento [Authorize] atribut omezuje přístup tím, že umožňuje pouze ověřené uživatele. Pokud uživatel ještě není ověřený, je možné spustit ověřovací výzvu pro přístup ke kontroleru. V tomto rychlém startu se obory načtou z konfiguračního souboru:

[AuthorizeForScopes(ScopeKeySection = "DownstreamApi:Scopes")]
public async Task<IActionResult> Index()
{
    var user = await _graphServiceClient.Me.Request().GetAsync();
    ViewData["ApiResult"] = user.DisplayName;

    return View();
}

Nápověda a podpora

Pokud potřebujete pomoc, chcete nahlásit problém nebo chcete získat informace o možnostech podpory, přečtěte si téma Nápověda a podpora pro vývojáře.

Další kroky

Následující GitHub, které obsahuje ukázkový ASP.NET Core kódu uvedený v tomto rychlém startu, obsahuje pokyny a další ukázky kódu, které vám ukážou, jak:

  • Přidání ověřování do nové webové ASP.NET Core aplikace
  • Volání rozhraní Graph, dalších rozhraní API Microsoftu nebo vlastních webových rozhraní API
  • Přidání autorizace
  • Přihlášení uživatelů v národních cloudech nebo pomocí sociálních identit