尽管授权 JWT cookie,但在 Fusionauth returns 401 中使用现有访问令牌 (JWT) 发出新的访问令牌 (JWT)

issue a new access token (JWT) using an existing access token (JWT) in Fusionauth returns 401 despite authorization JWT cookie

我在这里遵循文档: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 returns 401 的请求。

我该如何解决这个错误?

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

当使用httpie时,单个等号=表示参数在请求body中被序列化为JSON,而双等号== 表示该参数将附加到请求 URI。

httpie 帮助文本:

'==' URL parameters to be appended to the request URI:

search==httpie

'=' Data fields to be serialized into a JSON object (with --json, -j) or form data (with --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 header。如果您同时发送 Authorization header 将优先。 https://fusionauth.io/docs/v1/tech/apis/authentication#jwt-authentication