Необъяснимая ошибка 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, роль успешно назначается организации / пользователю.

Поэтому мы предполагаем, что либо документация, либо реализация ошибочны.

Источник: https://github.com/ging/fiware-idm/issues/144

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