Недавно я узнал, как OIDC предоставляет идентификатор пользователя поверх OAuth 2, а также удалось создать логин OIDC для моего webapp. Однако, когда дело доходит до части авторизации, неясно, как приложение должно знать, какие области запрашивать API?Обнаружение области/роли OpenID Connect
Например, определенные конечные точки должны быть защищены областью «admin», а соответствующие элементы пользовательского интерфейса должны быть скрыты от пользователей, не являющихся администраторами. Часть правоприменения, которую я могу реализовать, может быть легко реализована, но когда пользователь входит в систему, приложение должно знать, является ли пользователь администратором или нет - например, нужно ли запрашивать область «admin»/показывать связанные с администратором компоненты пользовательского интерфейса.
Есть ли какой-либо стандартный способ представления конкретных приложений в профиле пользователя, который поступает от IDP? Меня больше всего беспокоит то, что такая информация, насколько мне известно, не может быть добавлена в профили пользователей, например Google/Twitter/Facebook, поэтому вам необходимо либо a) дополнительный уровень (IdentityServer/OpenAM/etc), либо b) дополнительные данные профиля пользователя в базе данных webapp.
Моя первая мысль заключалась в том, чтобы добавить пользовательские претензии, выполнив а) - но когда дело доходит до интеграции с существующими ВПЛ, может быть невозможно настроить все профили пользователей (например, крупные корпоративные базы данных), поэтому я принимаю приложение должно быть достаточно гибким, чтобы переводить существующие данные профиля пользователя в «admin/not-admin».
Есть ли лучшее решение?