Azure AD + Open ID -> Ограничение домена входа - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь настроить Open Id Connect для внутреннего бизнес-приложения на основе ядра asp.net.

Из-за управления версиями внутреннего каталога я не могу подключиться напрямую к серверу 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 голосов
/ 10 мая 2018

Как подчеркнул Уэйн Ян. Необходимо добавить в параметр 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();
...