WSO2IS openid-connect: контроль доступа с использованием токена доступа

Я использую WSO2IS в качестве поставщика OIDC для аутентификации и авторизации. Используя код проверки подлинности, я получил токен доступа. Мне нужно авторизовать пользователей для доступа к определенным сервисам на основе их ролей.

Я попытался использовать XACML для решения этой проблемы, но обнаружил, что мне нужно передать base64-кодировку username:password в заголовке запроса REST API XACML. Вместо этого есть ли какой-нибудь способ, которым я могу авторизовать пользователя для доступа к сервисам на основе их ролей, используя токен доступа?

Эта часть авторизации происходит на сервере ресурсов. Я думал, что мог бы использовать конечную точку самоанализа для авторизации пользователя на основе маркера доступа с использованием областей. Но я не понимаю, как можно использовать области для контроля доступа пользователей?

1 ответ

Чтобы получить токен доступа со всеми областями, доступными пользователю, клиент OAuth2 должен запросить все области, которые ему нужны, и токен будет содержать только те, к которым у пользователя есть доступ. Смотрите этот вопрос.

Да, это громоздко, но OAuth2 - это прежде всего протокол делегирования авторизации - он позволяет пользователям делегировать некоторые из своих прав (областей) клиенту.

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

Другие вопросы по тегам