0

我在这里关注文档: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。

我该如何解决这个错误?

4

1 回答 1

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

于 2019-06-04T21:19:54.910 回答