Последующий вход с несколькими учетными записями Google

Я интегрировал Azure AD B2C в свое веб-приложение и использую MSAL на клиенте. Я использую Google в качестве социального IDP.

Используя Chrome, я начинаю только с одного идентификатора Google ([email protected]). Мое приложение вызывает loginRedirect(...), и я могу использовать [email protected] для успешного входа в Google. Если я затем закрою эту вкладку браузера (но не браузер), открою новую и заставлю мое приложение снова вызывать MSAL loginRedirect(), я автоматически войду в систему как [email protected], и все будет хорошо. Предположительно, файл cookie b2clogin.com используется для запоминания предыдущей информации для входа.

Если я затем добавлю еще один идентификатор Google ([email protected]), поведение изменится. Повторяя описанный выше сценарий, когда мое приложение впервые вызывает loginRedirect() и я пытаюсь войти через Google, меня просят выбрать между [email protected] и [email protected], как и ожидалось. Я выбираю [email protected], и я вошел в систему просто отлично. Если я затем закрою эту вкладку, открою новую и снова вызову приложение loginRedirect(), я автоматически попаду на страницу Google «Войти с помощью Google / Выберите учетную запись», где мне придется выбирать между [email protected] и [email protected]. Похоже, что AADB2C сохранил достаточно информации, чтобы знать, что я ранее входил в систему через Google, но фактический идентификатор Google, который использовался ранее, не выбирается автоматически, как я ожидал.

Следуя инструкциям в эта статья, я могу обойти это, а) сохранив последний использованный адрес электронной почты в файле cookie сеанса, а затем б) передав адрес электронной почты в Google как login_hint, но похоже, что это будет работать только с Google. Мы бы предпочли решение, которое будет работать для любого социального IDP.

Есть ли способ заставить AADB2C/Google автоматически выбирать предыдущую личность без использования login_hint?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
158
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

То, что вы испытываете, — это поведение при входе в Google, а не в Azure AD B2C.

Google запоминает, кто входил в текущий сеанс (например, [email protected]), а также кто входил в текущий браузер в последних сеансах (например, [email protected] и [email protected]).

(Google также разрешает множественный вход.)

Использование login_hint Google задокументировано в здесь.

login_hint — это концепция OpenID Connect, поэтому Google, как поставщик OpenID Connect, поддерживает ее, но многие поставщики OAuth 2.0 этого не делают (по крайней мере, поддерживают стандартизированным образом).

Другие вопросы по теме