IdentityServer4 и Azure AD автоматически выбирают пользователей на странице входа - PullRequest
5 голосов
/ 16 мая 2019

В последнее время кажется, что Microsoft что-то изменила в поведении, когда люди пытаются войти в систему с помощью своей учетной записи Microsoft через наши службы.

У нас есть настройка, в которой мы используем IdentityServer4 и Azure AD для учетных записей Microsoft,Когда люди пытаются войти в систему сейчас, они просто нажимают кнопку входа на нашей веб-странице и переходят на страницу входа Microsoft.Здесь кажется, что Microsoft автоматически выбирает уже вошедшего в систему пользователя и просто выполняет вход в систему.

Это приводит к двум проблемам.

  1. Пользователю трудно понять, что его учетная запись просто автоматически выбирается.
  2. Если пользователь достаточно быстр, он может щелкнуть своего пользователя, и это посылает два обратных вызова на наш сервер, и возникает состояние гонки, что приводит к OperationCancelledException половине времени.

Наша установка очень похожа на приведенную в качестве примера на IdentityServer4s. Краткое руководство:

serviceCollection
    .AddAuthentication(o =>
    {
        o.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
        o.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
    })
    .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddMicrosoftAccount("Microsoft", "Microsoft", o =>
    {
        o.SignInScheme = IdentityConstants.ExternalScheme;
        o.ClientId = _externalKeysOptions.MicrosoftClientId;
        o.ClientSecret = _externalKeysOptions.MicrosoftClientSecret;
        o.CallbackPath = new PathString("/signin-microsoft");
        new[]
        {
            "offline_access",
            "Calendars.Read.Shared",
            "Calendars.ReadWrite",
            "Tasks.Readwrite"
        }.ForEach(scope => o.Scope.Add(scope));
        o.SaveTokens = true;
    })

Мы настраиваем схемы аутентификации, как указано выше.И затем мы делаем нормальный вызов против поставщика:

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
[Route("externallogin")]
public IActionResult ExternalLogin(ExternalLoginModel model)
{
    var redirectUrl = Url.Action("ExternalLoginCallback", "Account", new { model.ReturnUrl, termsOfServiceAccepted = model.AgreeToTerms, platform = model.Platform });
    var properties = _signInManager.ConfigureExternalAuthenticationProperties(model.Provider, redirectUrl);

    return Challenge(properties, model.Provider);
}

Кто-нибудь знает, почему это происходит.Я действительно хотел бы отключить этот автоматический выбор учетной записи пользователей, когда они используют логин Microsoft.Потому что это больше сбивает с толку наших клиентов, чем помогает им.

Любые ресурсы приветствуются.Заранее спасибо.

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