共用方式為


快速入門:新增 Microsoft 登入功能至 ASP.NET Core Web 應用程式

歡迎! 這可能不是您預期的頁面。 當我們處理修正程式時,此連結應會將您導向至正確的文章:

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

當我們努力解決問題時,也對您的不便深感抱歉,並感謝您的耐心等候。

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

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

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

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

授權端點會發出請求ID令牌。

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

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

執行專案。

小提示

為了避免 Windows 中路徑長度限制所造成的錯誤,建議您將封存解壓縮或將存放庫複製到磁碟機根目錄附近的目錄中。

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

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

備註

Enter_the_Supported_Account_Info_Here

詳細資訊

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

此範例的運作方式

範例應用程式中的網頁瀏覽器、Web 應用程式和 Microsoft 身分識別平台之間的互動關係圖。

啟始類別

Microsoft.AspNetCore.Authentication 中介軟體使用一個類別,此類別在主機進程啟動時執行:

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 Connect。

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

appsettings.json 金鑰 說明
ClientId 在 Azure 入口網站中註冊之應用程式的應用程式識別碼。
Instance 用於使用者驗證的 Security Token Service (STS) 端點。 此值通常為 https://login.microsoftonline.com/,代表 Azure 公用雲端。
TenantId 租戶名稱或租戶 ID(GUID),或 common 以工作或學校帳戶或 Microsoft 個人帳戶登入使用者。

Configure() 方法包含兩個重要方法:app.UseAuthentication()app.UseAuthorization(),可啟用其各自的具名功能。 此外,在 Configure() 方法中,您必須註冊 Microsoft 身分識別 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。
  • 新增授權。
  • 使用國家雲端或社交身分識別登入使用者。