快速入門:透過 Microsoft 將登入新增至 ASP.NET Core Web 應用程式

歡迎! 這可能不是您預期的頁面。 當我們處理修正時,此鏈接應該會帶您前往正確的文章:

快速入門:透過 Microsoft 將登入新增至 ASP.NET Core Web 應用程式

我們為不便道歉,並感謝您的耐心,同時我們努力解決這個問題。

在本快速入門中,您會下載並執行程式碼範例,示範如何從任何 Microsoft Entra 組織登入 ASP.NET Core Web 應用程式。

步驟 1:在 Azure 入口網站 中設定您的應用程式

若要讓本快速入門中的程式碼範例運作:

  • 針對 [ 重新導向 URI],輸入 https://localhost:44321/https://localhost:44321/signin-oidc
  • 針對 [ 前端通道註銷 URL],輸入 https://localhost:44321/signout-oidc

授權端點會發出要求標識元令牌。

Already configured 您的應用程式會使用這些屬性進行設定。

步驟 2:下載 ASP.NET Core 專案

執行 專案。

提示

若要避免 Windows 中路徑長度限制所造成的錯誤,建議您將封存盤或複製存放庫擷取到磁碟驅動器根附近的目錄。

步驟 3:您的應用程式已設定並準備好執行

我們已使用您 app 屬性的值來設定您的專案,並準備好執行。

注意

Enter_the_Supported_Account_Info_Here

其他相關資訊

本節提供登入使用者所需的程式碼概觀。 此概觀有助於瞭解程式代碼的運作方式、主要自變數是什麼,以及如何將登入新增至現有的 ASP.NET Core 應用程式。

範例的運作方式

Diagram of the interaction between the web browser, the web app, and the Microsoft identity platform in the sample app.

啟動類別

Microsoft.AspNetCore.Authentication 中間件會使用Startup裝載進程啟動時執行的類別:

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
        .AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"));

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

方法 AddAuthentication() 會設定服務以新增 Cookie 型驗證。 此驗證用於瀏覽器案例,並將挑戰設定為OpenID連線。

包含的行會將 .AddMicrosoftIdentityWebApp Microsoft 身分識別平台 驗證新增至您的應用程式。 然後,應用程式會設定為根據 appsettings.json組態檔區段中的下列資訊AzureAD來登入使用者:

appsettings.json鍵 描述
ClientId 在 Azure 入口網站 中註冊之應用程式的應用程式(用戶端)標識碼。
Instance 用戶要驗證的安全性令牌服務 (STS) 端點。 此值通常是 https://login.microsoftonline.com/,表示 Azure 公用雲端。
TenantId 您的租用戶名稱或租使用者標識碼(GUID),或 common 以公司或學校帳戶或 Microsoft 個人帳戶登入使用者。

方法 Configure() 包含兩個重要的方法和 app.UseAuthentication()app.UseAuthorization(),可啟用其具名功能。 此外,在 方法中 Configure() ,您必須註冊 Microsoft Identity Web 路由,並至少呼叫 endpoints.MapControllerRoute() 或 呼叫 endpoints.MapControllers()

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

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

保護控制器或方法的屬性

您可以使用 屬性來保護控制器或控制器方法 [Authorize] 。 此屬性只允許已驗證的使用者,以限制對控制器或方法的存取。 然後,如果使用者未通過驗證,就可以啟動驗證挑戰來存取控制器。

說明與支援 

如果您需要協助、想要回報問題,或想要了解支援選項,請參閱 開發人員的說明和支援。

下一步

包含此 ASP.NET Core 教學課程的 GitHub 存放庫包含指示和更多程式碼範例,示範如何:

  • 將驗證新增至新的 ASP.NET Core Web 應用程式。
  • 呼叫 Microsoft Graph、其他 Microsoft API 或您自己的 Web API。
  • 新增授權。
  • 使用國家雲端或社交身分識別登入使用者。