共用方式為


快速入門:透過 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

授權端點會發出識別碼權杖的要求。

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

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

執行專案。

提示

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

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

我們已使用您的應用程式屬性值來設定您的專案,且專案已可供執行。

注意

Enter_the_Supported_Account_Info_Here

其他相關資訊

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

此範例的運作方式

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

啟始類別

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

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

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

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

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。
  • 新增授權。
  • 以國家雲端或社交身分識別登入使用者。