Azure AD + Open ID - >限制登录域

时间:2018-05-10 03:48:34

标签: azure asp.net-core azure-active-directory asp.net-core-2.0 openid-connect

我正在尝试为基于asp.net核心的内部业务应用程序配置Open Id Connect。

由于内部目录版本控制,我无法直接连接到ADFS服务器(未运行ADFS 2016,因此Open Id Connect不可用)。存在与Azure AD的目录同步,因此将通过Azure AD进行身份验证。

我已经有了它的工作,但是因为应用程序的用户只会来自一个给定的域,我想要通过电子邮件提示自动化。

login email prompt

目前的流量是,点击Azure AD - >进入公司域名 - >踢到内部ADFS服务器 - > (域连接机器)AD自动登录 - > Azure AD - >应用

因为此应用程序的所有用户都来自同一个域,并且最终通过ADFS服务器终止,我想跳过电子邮件提示(仅确定域的IDP),因此整个体验是无缝的。

是否有可用于告知Azure AD自动推断公司域的设置或标志? (即contoso.onmicrosoft.com)。我的解决方案基于以下Microsoft示例:

https://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnect-aspnetcore

其中包含“域”配置值,但未在代码中的任何位置使用。

1 个答案:

答案 0 :(得分:1)

正如Wayne Yang强调的那样。需要添加domain_hint参数。

services.AddAuthentication(options =>
        {
            options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
        })
        .AddOpenIdConnect(options =>
        {
            options.ClientId = azureAdOptions.ClientId;
            options.Authority = $"https://login.microsoftonline.com/{azureAdOptions.TenantId}";
            options.UseTokenLifetime = true;
            options.CallbackPath = "/signin-oidc";
            options.RequireHttpsMetadata = false;
            options.Events.OnRedirectToIdentityProvider += (RedirectContext context) =>
            {
                context.ProtocolMessage.DomainHint = azureAdOptions.Domain;
                return Task.CompletedTask;
            };
        })
        .AddCookie();