Azure AD. Как связать настраиваемые компоненты подписки и входа в SPA с базовым процессом Azure AD? - PullRequest
1 голос
/ 31 марта 2019

Я нахожусь на ранних этапах разработки приложения без сервера со следующими компонентами:

  1. SPA с использованием React, для которого я планирую запустить статические активы в хранилище Azure.

  2. Внутренний API-интерфейс, управляемый функциями Azure.

  3. Потенциально база данных CosmosDB, если нам удастся избежать использования полноценного SQLСервер.Это будет зависеть от того, насколько сложной будет наша схема.

В бэкэнде есть несколько других компонентов, но они не имеют отношения к этому вопросу.

По сути, я пытаюсь выяснить, как в моем React SPA можно создавать формы для регистрации и входа, кнопки и т. Д., Которые подключаются к пулу пользователей, управляемому Azure.

Проблема, с которой я сталкиваюсь на ранних этапах проектирования, заключается в моем понимании решений Azure для того, что мне нужно.Мой опыт работы в AWS.В AWS я бы просто создал пул пользователей Cognito и подключил процесс регистрации / входа моего приложения в указанный пул пользователей с помощью AWS SDK.

Этот процесс имеет смысл для меня.Однако в мире Azure все не так уж и просто.Я читал статьи / технические документы о Azure AD, Azure AD B2C и т. Д. И т. Д. Процессы, описываемые в этих статьях, никогда не упоминают взаимосвязь между формами, которые я создаю в своем SPA, и тем, как оттуда запускать аутентификацию.в Azure AD.По сути, я хочу, чтобы находящийся в игре Azure AD был невидим для пользователя;им только когда-либо придется взаимодействовать с моим клиентским приложением (т. е. не перенаправлять на страницы регистрации или входа в Microsoft или Azure и т. д.).

Пока что я придумалвключает следующее (опять же, я все еще на этапе разработки):

  1. Хранилище Azure для размещения статических активов.
  2. Функции Azure с прокси-серверами функций Azure для маршрутизации междуинтерфейс и API.
  3. Похоже, что поток пользователей Azure AD - это то, что вам нужно услышать;Тем не менее, я все еще не уверен, есть ли SDK, которые SPA может использовать для взаимодействия с такими функциями, как вход, забыл пароль, выход из системы и т. д. Я хочу избежать повторного вызова колеса в максимально возможной степени.

Я еще не начал писать код, поскольку в настоящее время я все еще на этапе разработки карандашом / бумагой.Я пришел к выводу о следующих проблемах:

  1. Имеет ли смысл запускать приложение React в хранилище BLOB-объектов по сравнению с наличием веб-приложения Azure?Под этим я подразумеваю, что я все еще буду в состоянии подключиться к процессу аутентификации, который обеспечивает Azure AD, без фактического запуска сервера.

  2. Полностью ожидать, что, как только я реализую Signingup / Sign-In User Flow, я смогу запускать процессы AAD и получить JWT для использования с последующими вызовами внутреннего API.Я пока не уверен, так ли это просто.

Я не ищу ни кода, ни чего-либо, просто в основном прояснение некоторых моих неопределенностей и подтверждение того, чтомой текущий путь имеет смысл.

1 Ответ

2 голосов
/ 01 апреля 2019

Вы правы. Azure AD B2C - это именно то, что вы ищете.

Чтобы ответить на ваши вопросы -

  1. Да. Вы можете разместить на блоб-хранилище и настроить статический хостинг веб-сайтов . Возможно, вы также захотите заглянуть в Azure CDN или Azure Frontdoor , чтобы ускорить доставку ваших статических активов.

    Но если вам также требуется отрисовка на стороне сервера и / или аутентификация Azure AD для вашего пользовательского интерфейса, вам придется использовать веб-приложение.

  2. Рекомендуемый способ выполнения аутентификаций в соответствии со спецификациями OAuth / OpenID Connect - это поток, в котором пользователь входит на сервер аутентификации (здесь Azure AD), который перенаправляет их клиентскому приложению, передающему код авторизации, который впоследствии был заменен токеном доступа и токеном обновления.

    Другой вариант - Implicit Flow , который обычно используется в одностраничных приложениях, где приложение напрямую получает токены из Azure AD.

    И требование, при котором ваши пользователи должны входить в систему из самого приложения, вы должны использовать Поток учетных данных владельца ресурса , где вы напрямую вызываете конечную точку Azure AD с именем пользователя и паролем, чтобы получить доступ токен взамен.

Подробнее о различных протоколах OAuth 2.0 и OpenID Connect , поддерживаемых Azure AD, вы можете прочитать в документации.

...