Получите разрешения пользователя Azure B2C (авторизуйте пользователя) с помощью потока аутентификации с помощью PKCE, MSAL v2, Vue.js и функций Azure

Используя Vue.js, клиент Azure B2C и функции Azure (C #), мы можем аутентифицировать пользователей в нашем приложении. Мы используем Auth Flow с PKCE и используем для этого библиотеку MSAL v2 во внешнем интерфейсе. В частности, мы используем пакет npm @ azure / msal-browser для MSAL.

Проблема: нам нужно получить разрешение пользователя (User / Manager / OrgAdmin / GlobalAdmin) для использования при ограничении доступа к компонентам нашего приложения. Кажется, что есть множество решений, включающих неявный поток и ADAL, но не многие, связанные с потоком MSAL и Auth.

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

Я могу использовать Microsoft Graph API в Vue.js при использовании неявных потоков, но не при использовании потоков MSAL v2 и Auth с PKCE.

В настоящее время я изучаю возможность авторизации внутреннего API (обслуживаемого через Функции Azure), зарегистрированного для нашего клиента B2C, для получения ролей / групп / разрешений с помощью Microsoft Graph API.

Мне кажется, что есть более простой способ получить что-то столь же важное, как роли и разрешения пользователей. Я приветствую некоторое понимание.

Спасибо!

Изменить (проработка)

Это не точный вариант использования, но он помогает найти корень проблемы, с которой я борюсь.

Пользователь проходит аутентификацию в нашем SPA с помощью потока Azure B2C, войдя в свою личную учетную запись Google.

Теперь мне нужно получить разрешение для пользователя, чтобы определить, что ему разрешено делать в приложении:

-Некоторые пользователи могут просматривать данные.

-Некоторые пользователи могут редактировать данные.

Грубо говоря, как этого добиться? Я могу получить групповую информацию с помощью Microsoft Graph API при использовании MSAL с неявным потоком, но не B2C, используя поток аутентификации с PKCE.

Спасибо еще раз!


person IdusOrtus    schedule 08.02.2021    source источник
comment
Прежде чем мы предоставим предложения, могу ли я узнать, почему вам нужно использовать авторизацию пользователя (User / Manager / OrgAdmin / GlobalAdmin) для управления доступом к компонентам вашего приложения? В вашем случае контент приложения должен быть вашими собственными данными? Почему бы не использовать авторизацию на основе ролей или групп? Пользователь / Менеджер / OrgAdmin / GlobalAdmin являются ролью AAD и не должны использоваться в такой сцене. Сама роль AAD выполняет функцию управления доступом к данным AAD.   -  person Allen Wu    schedule 09.02.2021
comment
Я не встречал никаких интуитивно понятных методов, с помощью которых я мог бы получить сведения о роли или группе для пользователя при использовании B2C с PKCE. Я столкнулся с несколькими темами, в которых предлагается использовать настраиваемые пользовательские потоки или редактировать манифест приложения, но похоже, что то, что я хочу сделать, является довольно распространенным сценарием, и для его настройки не требуется настройка. Я уточню, что я пытаюсь сделать в своем вопросе. Спасибо за ответ.   -  person IdusOrtus    schedule 10.02.2021
comment
Ты прав. Процесс аутентификации B2C не работает для Microsoft Graph. Таким образом, вам все равно нужно использовать поток аутентификации AAD для вызова Microsoft Graph для получения информации о группе. Но это должно быть реализовано с помощью настраиваемой политики, а не потока пользователей. Если вы не хотите использовать настраиваемую политику, другой хороший вариант - настраиваемый атрибут. См. Этот ответ.   -  person Allen Wu    schedule 10.02.2021
comment
Интересно. Я просто смотрел на «размер обуви», также называемый настраиваемыми атрибутами, и обнаружил, что приложение b2c-extensions-app никогда не создавалось для моего клиента b2c. Я проверил api графика для удаленных элементов, там ничего нет. Я отправил запрос в службу поддержки, возможно, они найдут, куда он пошел :) Еще раз спасибо за ввод и предложение re: custom policy, я очень ценю это.   -  person IdusOrtus    schedule 10.02.2021
comment
Большой. Вы не возражаете, я отправлю ответ, чтобы этот вопрос можно было заархивировать? Или вы ждете каких-то других предложений?   -  person Allen Wu    schedule 10.02.2021
comment
Пожалуйста, сделай. Спасибо.   -  person IdusOrtus    schedule 10.02.2021


Ответы (1)


Боюсь, что нет готового решения AAD B2C, которое получает информацию о роли группы / каталога.

Вы можете получать утверждения группы в B2C, используя настраиваемый код с помощью настраиваемых политик (IEF).

Если вы используете поток пользователей, вы можете рассмотреть настраиваемый атрибут. Например, создайте настраиваемый атрибут с именем AADRole. Назначьте реальную роль AAD в качестве значения другому пользователю, а затем получите утверждение из токена идентификатора после входа пользователей B2C.

Обратитесь к этому ответьте, чтобы узнать подробности.

person Allen Wu    schedule 10.02.2021