#keycloak #openid-connect #openid
Вопрос:
Я попытался использовать API защиты от блокировки ключей и UMA, пытаясь добавить ресурс в клиент, как в веб-интерфейсе. Моя проблема с веб-интерфейсом заключается в том, что я не могу найти способ назначить владельца ресурса пользователем. Всякий раз, когда я пытаюсь отправить запрос на http://IP:PORT/auth/realms/REALM_NAME/authz/protection/resource_set с телом
{
"name":"test",
"type":"http://www.someurl.com/api",
"icon_uri":"http://www.someurl.com/etc",
"resource_scopes":[
"read"
]
}
и маркер доступа с областями openid, uma_authorization, uma_protection и электронной почтой (с ролями uma_authorization и uma_protection), с помощью которого сервер блокировки ключей отвечает
{
"error": "invalid_scope",
"error_description": "Requires uma_protection scope."
}
Я перепробовал все, начиная с предоставления области действия моей учетной записи тестового пользователя и заканчивая сопоставлением ее с ролью.. Может быть, кто-нибудь знает, как добавлять ресурсы с владельцем к клиенту через API?
Комментарии:
1. я также сталкиваюсь с той же проблемой, получили ли вы какое-либо решение @DreamOfCookies
2. К сожалению, нет, я решил отказаться от этого подхода
Ответ №1:
Вы можете использовать этот api
https://{HOST}/auth/realms/master/authz/protection/resource_set
Body:
{
"owner":"ken", // your user (you should have user in db before creating recource)
"name":"ken_new_tp4:resource",
"ownerManagedAccess": true,
"resource_scopes":[
"edit",
"create",
"view"
]
}
Но вы должны использовать токен аутентификации с правами доступа для доступа к UMA.
Вы можете использовать токен администратора для создания или создания клиента (конфиденциально (с панели пользовательского интерфейса и входа в систему с помощью client_id и secret)
Я использую api администратора
POST https://{HOST}/auth/realms/master/protocol/openid-connect/token
{
client_id:admin-cli
scope:openid email
username:user
password:password
client_secret:{SECRET_OF_CLIENT_ADMIN_CLI},
grant_type:password
audience:security-admin-console
}
Дайте мне знать, если это решит вашу проблему