WSO2IS openid-connect: контроль доступа с использованием токена доступа
Я использую WSO2IS в качестве поставщика OIDC для аутентификации и авторизации. Используя код проверки подлинности, я получил токен доступа. Мне нужно авторизовать пользователей для доступа к определенным сервисам на основе их ролей.
Я попытался использовать XACML для решения этой проблемы, но обнаружил, что мне нужно передать base64-кодировку username:password в заголовке запроса REST API XACML. Вместо этого есть ли какой-нибудь способ, которым я могу авторизовать пользователя для доступа к сервисам на основе их ролей, используя токен доступа?
Эта часть авторизации происходит на сервере ресурсов. Я думал, что мог бы использовать конечную точку самоанализа для авторизации пользователя на основе маркера доступа с использованием областей. Но я не понимаю, как можно использовать области для контроля доступа пользователей?
1 ответ
Чтобы получить токен доступа со всеми областями, доступными пользователю, клиент OAuth2 должен запросить все области, которые ему нужны, и токен будет содержать только те, к которым у пользователя есть доступ. Смотрите этот вопрос.
Да, это громоздко, но OAuth2 - это прежде всего протокол делегирования авторизации - он позволяет пользователям делегировать некоторые из своих прав (областей) клиенту.
В качестве альтернативы, если бы вы могли выбирать разрешения на основе ролей, вы, вероятно, могли бы получить список ролей пользователей из идентификатора токена.