Приложение SaaS с AzureADB2C: потоки пользователей для единого входа клиента? - PullRequest
0 голосов
/ 03 мая 2019

У нас есть веб-приложение SaaS, и нашим клиентам требуется SSO-аутентификация для каждого из них. Мы используем AzureADB2C, и он прекрасно работает, но сейчас мы рассматриваем возможность добавления единого входа.

Я включил настройку единого входа в принцип B2C, и он прекрасно работает, но действительно испортил наш экран входа в систему с кнопкой «MyCompanySSO» для входа на нашем экране входа в систему, обращенном к клиенту.

Так что теперь моя идея состоит в том, чтобы иметь отдельный поток пользователей, который обрабатывает каждую настройку единого входа. Начиная с нас. Мы перешли на MyCompany.OurSaaSApp.us, и они перенаправили бы их непосредственно на конечную точку потока пользователя и предложили войти в систему с учетной записью единого входа (AzureAD).

Кажется, все это работает, но я получаю следующие ошибки в промежуточном программном обеспечении AzureADB2C:

Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler: Предупреждение. .AspNetCore.Correlation. государственная собственность не найдена.

Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler: Информация: ошибка удаленной аутентификации: корреляция не удалась ..

Затем меня выкачивают на страницу с ошибкой, и вход в систему не удается.

Итак, 2 вещи ... 1.) Я иду в правильном направлении, зная, чего мы хотим достичь 2.) Что нам нужно сделать, чтобы решить эту проблему?

Спасибо всем за помощь, она очень ценится.

(примечание:)

Просто чтобы повторить. Служба единого входа работает правильно, когда пользовательский поставщик удостоверений подключен к существующему потоку пользователей SignUpOrIn, который я настроил в приложении. Я получаю эту ошибку только при попытке использовать другой UserFlow, который я хочу использовать специально для этого единого входа.

1 Ответ

1 голос
/ 09 мая 2019

Я не уверен насчет этой конкретной ошибки, хотя параметр «состояние» - это параметр, который ваше приложение отправляет в запросе, который будет возвращен в токене для целей корреляции.

Использование и разные политики для каждой федерации звучат как правильный подход, но если вы делаете это из одного экземпляра своего приложения, вам нужно изменить сообщение протокола OIDC с правильными полномочиями (то есть политикой)при перенаправлении.

В конфигурации промежуточного программного обеспечения OIDC установите обработчик для уведомления RedirectToIdentityProvider.Затем обработайте это следующим образом:

    private Task OnRedirectToIdentityProvider(RedirectToIdentityProviderNotification<OpenIdConnectMessage, OpenIdConnectAuthenticationOptions> notification)
    {
        //var policy = notification.OwinContext.Get<string>("Policy");
        var tenantSegment = notification.Request.Path.Value.Split(new char [] { '/'}, StringSplitOptions.RemoveEmptyEntries)[0];

        if (!string.IsNullOrEmpty(tenantSegment) && !tenantSegment.Equals(DefaultPolicy))
        {
            notification.ProtocolMessage.IssuerAddress = notification.ProtocolMessage.IssuerAddress.ToLower().Replace(DefaultPolicy.ToLower(), $"B2C_1A_{tenantSegment.ToLower()}_SignUpSignInPolicy");
        }

        return Task.FromResult(0);
    }

Если вам нужно добавить что-либо еще, связанное с арендатором, это было бы местом, чтобы сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...