将用户注册与Azure AD集成

时间:2017-12-04 19:45:14

标签: asp.net-mvc asp.net-core azure-active-directory

我目前正在尝试设计和构建一个允许用户通过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的初学者。

1 个答案:

答案 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"];
        });