【问题标题】:REST - How to use auth token in subsequent requestsREST - 如何在后续请求中使用身份验证令牌
【发布时间】:2026-02-24 01:05:02
【问题描述】:

我正在使用一个 java 应用程序,为 mongodb 数据库提供一个名为“RESTHeart”的 REST 接口

当我发出正常的 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

我不确定我在这里做错了什么,有什么想法吗?

【问题讨论】:

标签: mongodb rest restheart


【解决方案1】:

我找到了这个问题的解决方案,我所需要的只是传递授权标头以及以 base64 格式编码的“用户名:密码”

  http GET http://172.18.18.122:8080/auth/users authorization:'Basic YWRtaW46dGVtcA=='

【讨论】:

    【解决方案2】:

    使用 httpie 你可以简单地做到:

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

    【讨论】:

      【解决方案3】:

      客户端通过标准基本身份验证验证传递的凭据,这是 HTTP 用户代理在发出请求时提供用户名和密码的标准方法。 RESTHeart 是无状态的:没有任何身份验证会话,并且必须在每个请求上发送凭据。

      当然,这意味着您必须使用 HTTPS 保护您的通信。

      https://softinstigate.atlassian.net/wiki/x/JgDM 有关于身份验证过程如何在 restheart 中工作的文档

      【讨论】: