快速入门:向 ASP.NET Core Web 应用添加 Microsoft 登录功能

欢迎使用! 这可能不是你期望看到的页面。 在修复时,此链接应会将你转至正确的文章:

快速入门:将 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 令牌。

Already configured 应用程序已使用这些属性进行配置。

步骤 2:下载 ASP.NET Core 项目

运行该项目。

提示

若要避免由于 Windows 中路径长度限制导致的错误,我们建议将存档提取或克隆到驱动器根目录附近的目录中。

步骤 3:应用已配置并可以运行

我们已经为项目配置了应用属性的值,并且该项目已准备好运行。

注意

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.

Startup 类

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 门户中注册的应用程序的“应用程序(客户端) ID”。
Instance 用户进行身份验证时使用的安全令牌服务 (STS) 终结点。 此值通常为 https://login.microsoftonline.com/,指示 Azure 公有云。
TenantId 租户的名称或租户 ID (GUID),或使用工作帐户或学校帐户或 Microsoft 个人帐户进行用户登录时常用的 common

Configure() 方法包含两个重要的方法 app.UseAuthentication()app.UseAuthorization(),这些方法实现了命名功能。 此外,在 Configure() 方法中,必须至少调用一次 endpoints.MapControllerRoute()endpoints.MapControllers() 来注册 Microsoft 标识 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。
  • 添加授权。
  • 在国家云中或使用社会标识实现用户登录。