1

Я в настоящее время пытается добавить роли в моем примере приложения Angular2 AspNetCore WebAPI, которую можно найти здесь: https://github.com/tonywr71/SnazzleAngular2 OpenIddict и Роли в Авторизация AspNetCore WebAPI

К сожалению, я немного застрял. Я успешно выполнил аутентификацию ASOS. Токен возвращается из метода connect/token, и я могу вызвать свой собственный метод с токеном-носителем в заголовке, и он будет успешно разрешен.

Теперь осталось два вопроса. Во-первых, даже если он разрешает, поле Имя в объекте User.Identity не задано. Я обошел это, добавив имя пользователя в Claims. Во-вторых, я хочу, чтобы роли были заполнены, поэтому я могу использовать Роли в атрибуте Authorize. Я включил базовый идентификатор Asp.Net в файле Startup.cs и настроил базу данных. Поэтому мне действительно хотелось бы добавить атрибут Authorize в метод webapi и установить разрешенные в этом атрибуте роли.

Любая идея, как заставить его заполнить имя и роли?

ответ

2

Любая идея, как заставить его заполнить имя и роли?

Чтобы получить имя пользователя, необходимо запросить стандартную область profile. Для ролей добавьте roles.

например:

grant_type=password&username=johndoe&password=A3ddj3w&scope=openid%20profile%20roles 
+0

Спасибо, что, кажется, работает. Кажется, что он нарушает какие-то принципы безопасности, разрешая роли, которые были отправлены клиентом. Вот почему я изначально не обратил на это внимания. Есть ли причина, по которой они должны были это сделать? – tone

+0

Роли не «отправляются» клиентом. Область «роли» доступна только для того, чтобы позволить OpenIddict возвращать (и раскрывать) их как в токене доступа, так и в токене. Поскольку токен идентификации читается клиентским приложением (а также токен доступа, если он является JWT), существует риск воздействия данных, и поэтому дополнительная область используется для того, чтобы разработчик знал об этом факте. – Pinpoint

+0

Я все еще немного смущен. Если я не добавлю область «роли», свойство Roles атрибута Authorize не будет распознано, и ничего не будет успешно разрешено. Мне кажется немного странным, что для того, чтобы получить полномочия на авторизацию на сервере, я должен отправить сферу «роли» от клиента. И если я поместил область «роли» в запрос клиента, тогда список ролей также будет отправлен клиенту. Это так? – tone

Смежные вопросы