尽管授权JWT Cookie是

时间:2019-06-04 11:54:17

标签: fusionauth

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

如何解决此错误?

1 个答案:

答案 0 :(得分: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