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.

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