Я разрабатываю бэкэнд безопасности, который должен предоставлять токены нескольким клиентам для защиты ряда API. База данных пользователей находится в Azure B2C https://azure.microsoft.com/en-us/services/active-directory-b2c/. Я хочу создать маркеры API, которые содержат различные требования, основанные на доступе пользователей. Например: пользователь A должен иметь возможность вызова/api/stores/11, но не/api/stores/12.Использование внешнего поставщика аутентификации для учетных данных пользователя, частного IdentityServer для генерации токена
Прецеденты:
- приложение, (Ipad), который идет непосредственно к Azure B2C для входа пользователя в систему и маркера поколения. Используйте этот токен, чтобы вызывать API для социального взаимодействия профиля пользователя и т. Д.
- Внешние системы, которые будут вызывать те же API (разные модули) с ограничениями прав доступа. Внешние системы будут иметь администраторов, которые также получат учетные данные от Azure B2C.
Мое решение до сих пор:
- IdentityServer4 (https://github.com/IdentityServer/IdentityServer4), который вызывает Azure B2C логин для проверки учетных данных пользователя.
- После того, как аутентификация завершена (при обратном вызове), IdentityServer будет применять любые утверждения, которые пользователь имеет (права доступа и т. Д.) Для внешних систем, а затем генерирует токен. IdentityServer будет иметь локальную базу данных, которая связывает идентификаторы пользователей/электронной почты с правами доступа.
- API-интерфейсы будут использовать поставщиков многоуровневой аутентификации для поддержки BOTH токена от Azure B2C И моего «промежуточного» IdentityServer. Поставщики - IdentityServerAuthentication и OpenIdConnectAuthentication соответственно.
Вопрос в том, является ли это жизнеспособным решением? Это слишком сложно? Что бы вы сделали по-другому в этом случае? Я не хочу внедрять второй логин пользователя, и Azure B2C, похоже, не поддерживает мелкие права доступа.
Заранее спасибо.
Спасибо большое! Мое единственное беспокойство в том, как пользователи приложений вступают в/из своих родных приложений, если приложение укажет на ID4? ID4 затем перенаправляется на Azure B2C, тогда они, вероятно, не будут отправлены обратно в приложение. Я не знаю много о привычном поведении приложения, поэтому мне жаль, если я не понимаю. –
ID4 будет прозрачным в середине. Все зависит от конфигурации. – leastprivilege