Как встроить контроль входа в пользовательскую страницу при использовании входа Azure B2C - PullRequest
0 голосов
/ 03 апреля 2019

Я работаю с образцом Azure AD B2C, и для целей тестирования я использую слегка измененное одностраничное приложение образец . У меня также есть Azure B2C и тестовый API-интерфейс (как функция Azure). Тестовое API и одностраничное приложение зарегистрированы как правильное приложение в Azure B2C, и настройка работает правильно.

Сценарий - вход пользователя в Azure B2C, получение токена и использование токена для вызова функции Azure. Проблема в том, что страница входа открывается в отдельном окне с URL-адресом B2C в адресной строке. Я хочу, чтобы элемент управления входом был встроен в одностраничное приложение.

Я просмотрел документацию и обнаружил, что можно настроить страницу входа в систему (в Политике потока пользователей / Макет страницы), но, похоже, это все еще будет отдельная страница, которая мне не нужна. Другая идея заключается в том, чтобы одностраничное приложение отправляло запрос на вход в систему на свой сервер в виде AJAX-запроса, а затем этот сервер выполняет вход в систему от имени этого пользователя, а затем возвращал токен одностраничному приложению. Но, похоже, это много хлопот и ненужных косвенных указаний, которых я хочу избежать как можно больше.

Ниже приведен скриншот сценария: Azure B2C login scenario showing login control opens in a separate page/window

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

В целях безопасности служба Azure B2C не позволяет вам этого делать. Согласно их FAQ :

Может ли мое приложение открывать страницы Azure AD B2C в iFrame?

Нет, из соображений безопасности страницы Azure AD B2C не могут быть открыты в iFrame. Наш сервис связывается с браузером, чтобы запретить плавающие фреймы. Сообщество безопасности в целом и OAUTH2 спецификация, не рекомендуется использовать iFrames для идентификации опыт из-за риска клик-джеккинг.

Это делается для того, чтобы сохранить пароль как общий секрет только для пользователя и B2C. В этой модели ваш сайт вообще не имеет доступа к паролю, он может знать только результат аутентификации.

0 голосов
/ 04 апреля 2019

В настоящее время одностраничное приложение не может встроить интерфейс входа в систему, поскольку Azure AD B2C не поддерживает CORS или iframing, что означает, что у вас есть следующие опции:

  1. Перенаправление браузера
  2. Всплывающее окно браузера
  3. Отправка учетных данных для входа через ваш собственный сервер в политика учетных данных пароля (ROPC) владельца ресурса
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...