Sdílet prostřednictvím


Rychlý start: Přihlášení uživatelů a volání rozhraní Microsoft Graph API z webové aplikace ASP.NET

V tomto rychlém startu stáhnete a spustíte ukázku kódu, která ukazuje ASP.NET webovou aplikaci, která může přihlásit uživatele pomocí účtů Microsoft Entra.

Podívejte se, jak ukázka funguje pro ilustraci.

Požadavky

Registrace a stažení aplikace

Tip

Postup v tomto článku se může mírně lišit v závislosti na portálu, od který začínáte.

Máte dvě možnosti, jak začít vytvářet aplikaci: automatickou nebo ruční konfiguraci.

Automatická konfigurace

Pokud chcete aplikaci nakonfigurovat automaticky a pak si stáhnout ukázku kódu, postupujte takto:

  1. Přihlaste se k rychlému startu centra pro správu Microsoft Entra jako alespoň cloudová aplikace Správa istrator.
  2. Zadejte název vaší aplikace a Vyberte Zaregistrovat.
  3. Podle pokynů stáhněte a automaticky nakonfigurujte novou aplikaci jedním kliknutím.

Ruční konfigurace

Pokud chcete ručně nakonfigurovat aplikaci a vzorový kód, použijte následující postupy.

Krok 1: Zaregistrujte si aplikaci

  1. Přihlaste se do Centra pro správu Microsoft Entra jako alespoň cloudová aplikace Správa istrator.
  2. Pokud máte přístup k více tenantům, pomocí ikony Nastavení v horní nabídce přepněte na tenanta, ve kterém chcete aplikaci zaregistrovat z nabídky Adresáře a předplatná.
  3. Přejděte na Identity>Applications> Registrace aplikací a vyberte Nová registrace.
  4. Do pole Název zadejte název aplikace. Zadejte například ASPNET-Quickstart. Uživatelé vaší aplikace uvidí tento název a později ho můžete změnit.
  5. Nastavte typ identifikátoru URI přesměrování na web a hodnotu na https://localhost:44368/hodnotu .
  6. Vyberte Zaregistrovat.
  7. V části Spravovat vyberte Ověřování.
  8. V části Implicitní udělení a hybridní toky vyberte tokeny ID.
  9. Zvolte Uložit.

Krok 2: Stažení projektu

Stažení ukázky kódu ASP.NET

Tip

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

Krok 3: Spuštění projektu

  1. Extrahujte soubor .zip do místní složky, která je blízko kořenové složky. Extrahujte například do C:\Azure-Samples.

    Doporučujeme extrahovat archiv do adresáře blízko kořenového adresáře jednotky, aby nedocházelo k chybám způsobeným omezením délky cesty ve Windows.

  2. Otevřete řešení v sadě Visual Studio (AppModelv2-WebApp-OpenID Připojení-DotNet.sln).

  3. V závislosti na verzi sady Visual Studio možná budete muset kliknout pravým tlačítkem na projekt AppModelv2-WebApp-OpenID Připojení-DotNet a pak vybrat Obnovit balíčky NuGet.

  4. Otevřete konzolu Správce balíčků výběrem možnosti Zobrazit>ostatní okna> Správce balíčků Konzola. Potom spusťte Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r.

  5. Upravte appsettings.json a nahraďte parametry ClientId, Tenanta redirectUri za:

    "ClientId" :"Enter_the_Application_Id_here" />
    "TenantId": "Enter_the_Tenant_Info_Here" />
    "RedirectUri" :"https://localhost:44368/" />
    

    V kódu:

    • Enter_the_Application_Id_here je ID aplikace (klienta) registrace aplikace, kterou jste vytvořili dříve. Id aplikace (klienta) najdete na stránce Přehled aplikace v Registrace aplikací v Centru pro správu Microsoft Entra.
    • Enter_the_Tenant_Info_Here je jedna z následujících možností:
      • Pokud vaše aplikace podporuje pouze moji organizaci, nahraďte tuto hodnotu ID adresáře (tenanta) nebo názvem tenanta (například contoso.onmicrosoft.com). V centru pro správu Microsoft Entra vyhledejte ID adresáře (tenanta) na stránce Přehled aplikace v Registrace aplikací.
      • Pokud vaše aplikace podporuje účty v libovolném organizačním adresáři, nahraďte tuto hodnotu organizationshodnotou .
      • Pokud vaše aplikace podporuje všechny uživatele účtu Microsoft, nahraďte tuto hodnotu commonhodnotou .
    • redirectUrije identifikátor URI přesměrování, který jste zadali dříve v Registrace aplikací v Centru pro správu Microsoft Entra.

Více informací

Tato část obsahuje přehled kódu potřebného k přihlášení uživatelů. Tento přehled může být užitečný k pochopení toho, jak kód funguje, jaké jsou hlavní argumenty a jak přidat přihlášení do existující aplikace ASP.NET.

Jak ukázka funguje

Diagram interakce mezi webovým prohlížečem, webovou aplikací a platformou Microsoft Identity Platform v ukázkové aplikaci

Balíčky NuGet middlewaru OWIN

Ověřovací kanál s ověřováním založeným na souborech cookie můžete nastavit pomocí openID Připojení v ASP.NET s balíčky middlewaru OWIN. Tyto balíčky můžete nainstalovat spuštěním následujících příkazů v konzole Správce balíčků v sadě Visual Studio:

Install-Package Microsoft.Identity.Web.Owin
Install-Package Microsoft.Identity.Web.GraphServiceClient
Install-Package Microsoft.Owin.Security.Cookies

Spouštěcí třída OWIN

Middleware OWIN používá spouštěcí třídu , která se spouští při spuštění procesu hostování. V tomto rychlém startu se soubor startup.cs nachází v kořenové složce. Následující kód ukazuje parametry, které tento rychlý start používá:

    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();
    }
Kde Popis
ClientId ID aplikace z aplikace zaregistrované na webu Azure Portal.
Authority Koncový bod služby tokenů zabezpečení (STS) pro ověření uživatele. Obvykle se jedná https://login.microsoftonline.com/{tenant}/v2.0 o veřejný cloud. V této adrese URL je {tenant} název vašeho tenanta, ID tenanta nebo common odkaz na společný koncový bod. (Společný koncový bod se používá pro víceklientských aplikací.)
RedirectUri Adresa URL, kde se uživatelé po ověření posílají na platformě Microsoft Identity Platform.
PostLogoutRedirectUri Adresa URL, kde se uživatelé po odhlášení odesílají.
Scope Seznam požadovaných oborů oddělených mezerami.
ResponseType Požadavek, že odpověď z ověřování obsahuje autorizační kód a token ID.
TokenValidationParameters Seznam parametrů pro ověřování tokenů; V tomto případě je nastavená tak, aby false označí, ValidateIssuer že může přijímat přihlášení z libovolného typu osobního, pracovního nebo školního účtu.
Notifications Seznam delegátů, které se dají spustit ve OpenIdConnect zprávách.

Ověřovací výzva

Uživatele můžete k přihlášení přinutit tím, že si v řadiči vyžádáte výzvu ověřování:

public void SignIn()
{
    if (!Request.IsAuthenticated)
    {
        HttpContext.GetOwinContext().Authentication.Challenge(
            new AuthenticationProperties{ RedirectUri = "/" },
            OpenIdConnectAuthenticationDefaults.AuthenticationType);
    }
}

Tip

Požadavek na výzvu ověřování pomocí této metody je volitelný. Normálně byste ho používali, když chcete, aby zobrazení bylo přístupné jak ověřeným, tak neověřeným uživatelům. Řadiče můžete zároveň chránit způsobem popsaným v další části.

Atribut pro ochranu kontroleru nebo akce kontroleru

Akce kontroleru nebo kontroleru můžete chránit pomocí atributu [Authorize] . Tento atribut omezuje přístup ke kontroleru nebo akcím tím, že umožňuje přístup k akcím v kontroleru pouze ověřeným uživatelům. Ověřovací výzva se pak stane automaticky, když se neověřený uživatel pokusí získat přístup k některé z akcí nebo kontrolerů zdobených atributem [Authorize] .

Volání Microsoft Graphu z kontroleru

Microsoft Graph můžete volat z kontroleru získáním instance GraphServiceClient pomocí GetGraphServiceClient metody rozšíření na kontroleru, například v následujícím kódu:

    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();
    }

Nápověda a podpora

Pokud potřebujete pomoc, chcete nahlásit problém nebo se chcete dozvědět o možnostech podpory, přečtěte si nápovědu a podporu pro vývojáře.

Další kroky

Úplný podrobný průvodce vytvářením aplikací a nových funkcí, včetně úplného vysvětlení tohoto rychlého startu, si můžete vyzkoušet kurz ASP.NET.