【问题标题】:issue a new access token (JWT) using an existing access token (JWT) in Fusionauth returns 401 despite authorization JWT cookie尽管授权 JWT cookie,但在 Fusionauth 中使用现有访问令牌 (JWT) 发出新的访问令牌 (JWT) 返回 401
【发布时间】:2019-10-19 22:53:15
【问题描述】:

我在这里关注文档:https://fusionauth.io/docs/v1/tech/apis/jwt

并尝试获得新的 JWT 以访问同一租户中的第二个应用程序。我使用 httpie 而不是 curl 来获取访问令牌:

source config.sh
ACCESS_TOKEN=`http POST "${URL}/api/login" \
 "Authorization:${API_KEY}" \
 "X-FusionAuth-TenantId:${TENANT1_ID}" \
 "applicationId=${APP1_ID}" \
 "loginId=${USER}" \
 "password=${PASS}" \
 | python -m json.tool | grep token | cut -f4 -d'"'`

echo ${ACCESS_TOKEN}

然后我在以下请求中使用此访问令牌来访问第二个应用程序:

source config.sh
JWT=`bash access_token.sh`

http GET ${URL}/api/jwt/issue \
    "Authorization: JWT ${JWT}" \
    "Cookie: access_token=${JWT}" \
    "applicationId=${APP2_ID}"

#http GET ${URL}/api/user \
#        "Authorization: JWT ${JWT}" 

请注意,对 /api/user 的评论请求运行良好,但对 /api/jwt/issue 的请求返回 401。

我该如何解决这个错误?

【问题讨论】:

    标签: fusionauth


    【解决方案1】:

    applicationId 必须通过请求参数。
    https://fusionauth.io/docs/v1/tech/apis/jwt

    使用httpie时,单等号=表示参数要序列化为请求体中的JSON,双等号==表示参数要附加到请求URI中。

    httpie帮助文字:

    '==' 附加到请求 URI 的 URL 参数:

    search==httpie
    

    '=' 要序列化为 JSON 对象的数据字段(带 --json, -j) 或表单数据(带有--form,-f):

     name=HTTPie  language=Python  description='CLI HTTP client'
    

    尝试修改您的请求,为 applicationId 参数使用双等号 ==

    http GET ${URL}/api/jwt/issue \
        "Authorization: JWT ${JWT}" \
        "applicationId==${APP2_ID}"
    

    此外,您只需发送 cookie 或 Authorization 标头。如果您同时发送 Authorization 标头将优先。 https://fusionauth.io/docs/v1/tech/apis/authentication#jwt-authentication

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-08
      • 2017-12-29
      • 1970-01-01
      • 2021-06-13
      • 2021-08-23
      • 2021-12-14
      • 2021-10-09
      • 2020-10-15
      相关资源
      最近更新 更多