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

欢迎! 这可能不是你期望看到的页面。 在我们修复问题的过程中,此链接可以带你到相关的文章。

快速入门:在 ASP.NET Core Web 应用中添加 Microsoft 登录

对此造成你的不便,我们深表歉意;感谢你的耐心等待,我们正在努力解决此问题。

在本快速入门中,你将下载并运行一个代码示例,该示例演示 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:应用已配置并可以运行

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

注释

Enter_the_Supported_Account_Info_Here

详细信息

本部分概述了使用户登录所需的代码。 此概述对于了解代码的工作原理、主要参数是什么,以及如何向现有 ASP.NET Core 应用程序添加登录非常有用。

示例的工作原理

示例应用中 Web 浏览器、Web 应用和Microsoft标识平台之间的交互关系图。

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

包含 .AddMicrosoftIdentityWebApp 的行可向应用程序添加 Microsoft 标识平台身份验证。 然后,应用程序配置为根据配置文件appsettings.jsonAzureAD部分中的以下信息来登录用户:

appsettings.json 密钥 DESCRIPTION
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 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。
  • 添加授权。
  • 在国家云中或使用社会标识实现用户登录。