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

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

我正在尝试为基于 asp.net core 的内部业务应用程序配置 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

其中有一个“Domain”配置值,但代码中没有使用它。

最佳答案

正如 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();

关于Azure AD + Open ID -> 限制登录域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50265176/

相关文章:

python - 在 Python 中访问 Azure Key Vault 时出现意外的关键字参数 'tenant_id'

azure - 如何在 Azure Devops 中以正确的方式进行基于功能的部署?

c# - 服务器端的 Blazor : using MongoDB for Identity management

azure - 与 Azure 服务相关的网络相关信息

azure - 将 Azure VM 和本地服务器连接到 Azure Active Directory 域服务

azure - CLI v2.0.1-beta.28 proxy.json 问题

Azure ADD 隐藏默认 URL 并使用 C# 显示所需 URL

asp.net - 将 ASP.NET vNext 应用程序部署到 Azure 云服务

c# - 如何在 .Net Core ActionFilterAttribute 中使用依赖注入(inject)?

c# - UserPasswordCredential .Net 标准