REST - Как использовать токен авторизации в последующих запросах

Я использую приложение Java, предоставляющее интерфейс REST для базы данных mongodb под названием «RESTHeart».

Когда я делаю обычный запрос GET.

http -a admin:temp http://172.18.18.122:8080/_logic/roles/admin

Я получаю токен авторизации Auth-Token: 10dc2eeb-9624-47f2-a542-c97e0af82b23, как я могу использовать его в последующих запросах?

Вот полный ответ

HTTP/1.1 200 OK
    Access-Control-Allow-Credentials: true
    Access-Control-Allow-Origin: *
    Access-Control-Expose-Headers: Location, ETag, Auth-Token, Auth-Token-Valid-Until, Auth-Token-Location, X-Powered-By
    Auth-Token: 10dc2eeb-9624-47f2-a542-c97e0af82b23
    Auth-Token-Location: /_authtokens/admin
    Auth-Token-Valid-Until: 2016-04-25T14:37:22.290Z
    Connection: keep-alive
    Content-Encoding: gzip
    Content-Length: 109
    Content-Type: application/hal+json
    Date: Mon, 25 Apr 2016 14:22:22 GMT
    X-Powered-By: restheart.org

    {
        "_links": {
            "self": {
                "href": "/_logic/roles/admin"
            }
        },
        "authenticated": true,
        "roles": [
            "ADMIN"
        ]
    }

Я пробовал следующее:

http http://172.18.18.122:8080/_logic/roles/admin Auth-Token:'10dc2eeb-9624-47f2-a542-c97e0af82b23' 

Ответ:

HTTP/1.1 403 Forbidden
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: Location, ETag, Auth-Token, Auth-Token-Valid-Until, Auth-Token-Location, X-Powered-By
Connection: keep-alive
Content-Length: 0
Date: Mon, 25 Apr 2016 14:30:27 GMT
X-Powered-By: restheart.org

Я не уверен, что я делаю неправильно здесь, есть идеи?


person Deano    schedule 25.04.2016    source источник
comment
Ваш ответ сервера GET должен включать заголовок Access-Control-Allow-Headers. См. stackoverflow.com/questions/13994507/   -  person RamblinRose    schedule 25.04.2016


Ответы (3)


с httpie вы можете просто сделать:

http -a <username>:<Auth-Token> GET http://172.18.18.122:8080/auth/users

person Andrea Di Cesare    schedule 26.04.2016

Я нашел решение этого вопроса, все, что мне было нужно, это передать заголовок авторизации вместе с «имя пользователя: пароль», закодированный в формате base64.

  http GET http://172.18.18.122:8080/auth/users authorization:'Basic YWRtaW46dGVtcA=='
person Deano    schedule 25.04.2016

Клиенты аутентифицируют передачу учетных данных с помощью стандартной базовой аутентификации, стандартного метода для пользовательского агента HTTP, который предоставляет имя пользователя и пароль при выполнении запроса. RESTHeart не имеет состояния: нет сеанса аутентификации, и учетные данные должны отправляться при каждом запросе.

Конечно, это означает, что вы должны защитить свои коммуникации с помощью HTTPS.

Документация о том, как работает процесс аутентификации в restheart, доступна по адресу https://softinstigate.atlassian.net/wiki/x/JgDM

person mturatti    schedule 26.04.2016