Роли одностраничных приложений Azure AD B2C

Мы пытаемся интегрировать Azure AD B2C в SPA. Мы хотим включить роли в билет, чтобы мы могли использовать AuthorizeRoles и IsInRole в API. Мы рассмотрели пару примеров.

Пример 1

Пример 2

Первый пример не является SPA и не включает роли. Принято считать, что включение членства и групп в заявку с использованием Azure AD B2C не поддерживается по приведенной ниже ссылке.

Отзыв о членстве в группах Azure AD B2C

Обходной путь, предложенный выше, по-видимому, заключается в использовании события «OnAuthorizationCodeReceived», как показано ниже, для ввода/добавления ваших собственных утверждений о роли в билет.

Временное решение

У нас есть проблема в том, что мы используем SPA, поэтому нам нужно следовать примеру 2, нам также нужно иметь возможность добавлять наши собственные управляемые роли в билет, который не поддерживается, но Microsoft заявила, что есть обходной путь, поскольку показано. Однако обходной путь не работает с MSAL.js, как в примере 2.

Как мы можем включить наши собственные управляемые роли в заявку с помощью библиотеки MSAL.js, чтобы мы могли интегрировать Azure AD B2C в наш SPA, что позволяет нам использовать AuthorizeRoles и IsInRole в API?


person peter pan    schedule 09.04.2018    source источник


Ответы (1)


Прежде всего, вы упомянули, что используете библиотеку MSAL.js, а это означает конечную точку v2. В настоящее время (по состоянию на 16 мая 2018 г.) конечная точка версии 2 имеет ограничения на роли и группы, см. ограничения v2, где указано:

Конечная точка версии 2.0 не поддерживает выдачу утверждений ролей или групп в токенах идентификаторов.

Маркеры идентификаторов используются в неявном потоке с конечной точкой версии 2, см. здесь Пошаговая настройка Azure AD v2 Spa и прочтите примерно половину пути в разделе Дополнительная информация

Суть в том, чтобы быть абсолютно уверенным, что конечная точка v2 (и библиотеки MSAL) может поддерживать ваши требования.

Что касается меня, то мы остановились на конечной точке v1 и библиотеках ADAL отчасти из-за таких ограничений. Но вот несколько примеров использования ролей в коде. Обратите внимание, что эти репозитории довольно новые, и я все еще разрабатываю документацию. Есть два репозитория: один представляет собой отдельный проект пользовательского интерфейса angularjs, а другой представляет собой набор API (это демонстрации, которые я использовал на презентации codecamp). Читайте ниже о ролях в AAD. Только в примере с пользовательским интерфейсом используются библиотеки ADAL (примечание: библиотеки ADAL и MSAL предназначены для управления маркерами в клиентах, а не для блокировки серверных частей).

API: https://github.com/BgRva/aad_adal_api_dn_std/tree/Step_C

Пользовательский интерфейс: https://github.com/BgRva/aad_adal_ui_ng_js/tree/Step_C

Некоторые примечания о ролях в AAD:

  • Роли зависят от приложения, поэтому в приведенных выше примерах одни и те же роли должны быть зарегистрированы для всех приложений, которые будут их использовать (включая идентификатор роли).
  • You can give multiple roles to a user in AAD, you just need to add them multiple times to that application with a different role selected.
    • Manually adding users to roles will not scale and requires lots of clicks in the portal. It can be easier managed with groups but only at the AAD Premium Level 2 do you get this benefit
    • Предположительно есть способ программно добавлять роли но я ничего не нашел по этому поводу

Ваше здоровье

person BgRva    schedule 16.05.2018