我目前正在尝试设计和构建一个允许用户通过Azure AD登录的ASP.NET核心应用程序。我的目标是拥有一个托管在Azure中的Web应用程序,允许(内部/外部)用户使用我们/他们公司的azure广告登录,以使用配置文件访问应用程序的功能。
我正在寻求实施工作流程:
步骤1)用户使用其公司电子邮件登录并使用其公司的Office 365登录进行身份验证。 (我能够使用ASP.NET核心示例项目来实现这一点。)
步骤2)如果是用户'第一次,系统会提示他们配置个人资料的注册页面。将在内部SQL Server数据库中跟踪配置文件信息。在管理员完成配置文件的配置/激活之前,他们的配置文件将被锁定。
步骤3)如果用户已经注册,他们的个人资料将被检索并加载,应用程序将加载应用程序的主页,以便用户可以访问他们被允许的所有功能。
我坚持实施第2步。可能这不是一个很棒的设计,欢迎提供反馈,以改善访问网络应用程序的经过身份验证的用户的工作流程。
对于某些历史记录,我之前创建了一个ASP.NET 4.5 MVC应用程序(使用Visual Studio生成的示例),用户在内部跟踪和注册,但我无法弄清楚如何将步骤1连接到使用ASP.NET核心和Azure AD时的第2步。我没有使用Azure AD的经验,而且我是ASP.NET的初学者。
答案 0 :(得分:1)
你的问题很广泛。
我建议你看看ASP.NET Core Identity。它允许您将身份验证外包给Azure AD(以及许多其他登录提供程序),并且还具有包含配置文件信息的本地用户数据库。
使用标准的Entity Framework方法扩展数据类并将迁移添加到数据库,您可以将配置文件信息添加到本地数据库。
由于某种原因,没有集成Azure AD和ASP.NET核心标识的示例,因此您必须通过查看需要完成的工作 other external providers。
简而言之,您在ConfigureServices
中的Startup.cs
方法中添加了这些行的标识框架:
services.AddDbContext<IdentityDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("IdentityDbConnectionString")));
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<IdentityDbContext>()
.AddDefaultTokenProviders();
然后使用Open ID Connect添加Azure AD身份验证:
services.AddAuthentication()
.AddOpenIdConnect(
o =>
{
o.ClientId = Configuration["AzureAd:ClientId"];
o.Authority = String.Format(
"https://login.microsoftonline.com/{0}", Configuration["AzureAd:Tenant"]);
o.SignedOutRedirectUri = Configuration["AzureAd:PostLogoutRedirectUri"];
});