Необъяснимая ошибка 403 "Пользователь не разрешает выполнять действие" в Keyrock
Я какое-то время боролся с этой проблемой и задавался вопросом, была ли у кого-нибудь такая же проблема.
У меня есть архитектура Keyrock 7.8.0 + MySQL, работающая с докером, как предлагают учебники FIWARE. Я могу получить доступ к графическому интерфейсу и API через localhost:3005. Кажется, что все работает нормально через графический интерфейс с пользователем-администратором, но когда дело доходит до предоставления с помощью токена аутентификации администратора роли пользователю
curl -X PUT \
http://localhost:3005/v1/applications/20f9bc1d-a9d1-45af-bdd9-f96fdc7a1ec9/users/c8336e47-8e3b-4081-b0f7-b2a3431847d7/roles/55e8a41c-52b5-4ef9-ad9c-ef60762d32e3 \
-H 'Accept: */*' \
-H 'Accept-Encoding: gzip, deflate' \
-H 'Cache-Control: no-cache' \
-H 'Connection: keep-alive' \
-H 'Content-Length: 0' \
-H 'Content-Type: application/json' \
-H 'Cookie: session=eyJyZWRpciI6Ii8ifQ==; session.sig=TqcHvLKCvDVxuMk5xVfrKEP-GSQ' \
-H 'Host: localhost:3005' \
-H 'Postman-Token: cb7e8ae3-87b4-4d8e-9fb7-a66ef439a7cf,7f736505-8c7e-4991-8449-ebd6e54714f7' \
-H 'User-Agent: PostmanRuntime/7.19.0' \
-H 'X-Auth-token: f20c72c6-7c2a-4d8e-8d48-568e1c4e47d6' \
-H 'cache-control: no-cache'
или организация,
curl -X PUT \
http://localhost:3005/v1/applications/20f9bc1d-a9d1-45af-bdd9-f96fdc7a1ec9/organizations/d98534f7-ecaa-4c38-93cc-c17d87f010ee/roles/55e8a41c-52b5-4ef9-ad9c-ef60762d32e3/organization_roles/member \
-H 'Accept: */*' \
-H 'Accept-Encoding: gzip, deflate' \
-H 'Cache-Control: no-cache' \
-H 'Connection: keep-alive' \
-H 'Content-Length: 0' \
-H 'Content-Type: application/json' \
-H 'Cookie: session=eyJyZWRpciI6Ii8ifQ==; session.sig=TqcHvLKCvDVxuMk5xVfrKEP-GSQ' \
-H 'Host: localhost:3005' \
-H 'Postman-Token: 11fc3dbb-8484-482f-8bc1-af89dcdeebb5,8bfdcdb5-f200-4bee-bcee-a8f6d83b18f0' \
-H 'User-Agent: PostmanRuntime/7.19.0' \
-H 'X-Auth-token: f20c72c6-7c2a-4d8e-8d48-568e1c4e47d6' \
-H 'cache-control: no-cache'
он просто отвечает этой ошибкой в теле:
{
"error": {
"message": "User not allow to perform the action",
"code": 403,
"title": "Forbidden"
}
}
Кто-нибудь знает, как может быть, что у одного и того же пользователя есть разрешение делать что-то через графический интерфейс, а не через API?
1 ответ
Мы столкнулись с той же проблемой и, вероятно, нашли решение:
Согласно документации для назначения ролей организациям или назначения ролей пользователям необходимо использовать HTTP-команду PUT. На самом деле Keyrock затем отвечает следующим сообщением об ошибке:
{ "error": { "message": "User not allow to perform the action", "code": 403, "title": "Forbidden" } }
Когда мы используем HTTP-глагол POST вместо PUT, роль успешно назначается организации / пользователю.
Поэтому мы предполагаем, что либо документация, либо реализация ошибочны.