这是我第一次遇到JWT令牌,我想知道该令牌在首次创建后如何返回给客户端。
它应该出现在Authorization : Bearer header
中吗?
通常,在每次请求时,都是客户端在Authorization : Bearer header
中传递令牌。
我想知道在用户通过身份验证并创建令牌后,服务器如何将该令牌传递给客户端。还在同一标题中吗?在不同的标题中?
在我的情况下,服务器将生成令牌,而不是作为响应,而是作为请求的一部分。
例如:-
用户将登录到门户,然后单击指向授权应用程序的链接。包含用户声明的JWT将作为请求的一部分传递到授权的应用程序。
最好的方法是什么? GET还是POST?标头(哪个)?请求参数? POST正文?
谢谢!
答案 0 :(得分:2)
关于如何将JWT令牌返回给客户端没有标准,但是,请检查此URL,它会回答您的问题
https://github.com/dwyl/hapi-auth-jwt2/issues/82#issuecomment-129873082
将JWT令牌放入Authorization标头中使我们可以灵活地在Web应用程序中发送实际响应。对于仅REST的App / API,您可以自由发送JWT作为响应正文或cookie。重要的是客户端如何存储JWT并将其发送回服务器,这是在Authorization标头(或Cookie或URL令牌,如果您愿意的话)中完成的
对于“野生”中存在的这种情况,我还没有看到服务器向客户端发送Authorization标头的示例,但是规范中没有任何内容表明这是一种反模式。 参见:http://self-issued.info/docs/draft-ietf-oauth-v2-bearer.html
如果您要遵循准则,请遵循以下示例:http://self-issued.info/docs/draft-ietf-oauth-v2-bearer.html#ExAccTokResp
答案 1 :(得分:1)
人们可能有兴趣知道 OAuth 2.0 standard 为此目的指定了响应正文:
<块引用>5.1.成功响应
授权服务器发出访问令牌和可选的刷新 令牌,并通过添加以下参数来构造响应 到带有 200 (OK) 状态代码的 HTTP 响应的实体主体:
access_token
必需的。授权服务器颁发的访问令牌。
[...]
答案 2 :(得分:0)
此外,当您可以将标记放在URL中时,还有另一种策略。在服务器端,您可以在URL后添加令牌,以防从某些安全服务获得重定向。例如:
http://[my-app]/index.html?access_token=sadmopwmopmdmvsasom....
然后在js中,您可以像这样获得它:
let url = new URL(window.location);
let accessToken = url.searchParams.get("access_token");
但是,请记住,这种方法不能被认为是安全的。