apigee "У субъекта нет прав" для входа в систему
Код, который ранее работал, чтобы получить зарегистрированного пользователя, теперь терпит неудачу. Для роли по умолчанию у меня есть несколько разрешений, в том числе это (в списке по адресу /role /xxx/permissions):
"get:/users/me"
Чтобы убедиться, что я не сломал что-то в API, я вошел в систему из Curl (имена изменены для защиты виновных):
curl -X POST "https://api.usergrid.com/xxx/xxx/token" -d '{"grant_type":"password", "username":"test", "password":"xxx"}'
Это получает действительный ответ с токеном доступа:
{"access_token":"YWMxxxNnAHCEeSEEUF6k0-adAAAAUcaO_3R5IcK1ftFnDt0x52NVSoHEATWD6Q","expires_in":604800,"user":{"uuid":"a2517xxx-d3dc-11e3-b4fb-17caf255a670","type":"user","name":"Test User","created":1399243032076,"modified":1399243032076,"username":"test","email":"test@test.com","activated":true,"picture":"http://www.gravatar.com/avatar/b64xxx217b34b1e8d3bd915fc65c4452"}}
Используя этот токен доступа, составьте запрос Curl, чтобы получить / users / me:
curl -X GET https://api.usergrid.com/xxx/xxx/users/me?access_token=YWMxxxNnAHCEeSEEUF6k0-adAAAAUcaO_3R5IcK1ftFnDt0x52NVSoHEATWD6Q
Теперь вместо того, чтобы работать, как я полагаю, раньше, я получаю это:
{"error":"unauthorized","timestamp":1404289792782,"duration":0,"exception":"org.apache.shiro.authz.UnauthorizedException","error_description":"Subject does not have permission [applications:get:d5e9e5a0-d310-11e3-a524-df009e0fbc2f:/users/a25174ca-d3dc-11e3-b4fb-17caf255a670]"}
Я что-то сломал и просто пропустил? Я пытался удалить разрешение и воссоздать его, но это тоже не помогло. Спасибо!
2 ответа
Вопрос @remus побудил меня найти пример на странице безопасности, чтобы показать, откуда я получил разрешение. Однако на странице http://apigee.com/docs/app-services/content/managing-access-defining-permission-rules теперь показан этот пример:
GET,PUT,POST,DELETE:/users/me/**
Я вполне уверен, что это не так раньше, так как этот код работал в течение нескольких недель с предварительного разрешения. Может быть, я ударился головой:-) Надеюсь, кто-нибудь еще с этой проблемой найдет это. Примеры скручивания, опубликованные в вопросе, теперь работают нормально с этим набором разрешений (хотя я только добавил разрешение GET в моем случае).
Насколько мне известно, вы не можете использовать "я" в качестве сущности для извлечения себя. Вам нужно будет указать собственно имя пользователя или uuid объекта пользователя. К счастью, когда вы получаете токен, эта информация передается обратно в ответ, так что вы можете сохранить ее.
Смотрите получение пользователя в Apigee docs.