快速入门:向 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 应用程序添加登录非常有用。
示例工作原理
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.partner.microsoftonline.cn/ ,表示由世纪互联运营的 Microsoft Azure。 |
TenantId |
该值是租户的名称或租户 ID (GUID),或者是 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。
- 添加授权。
- 在国家云中或使用社会标识实现用户登录。