Ключ для добавления ресурса в клиент

#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
}
 

Дайте мне знать, если это решит вашу проблему