繁体   English   中英

服务器如何将 JWT 令牌返回给客户端?

[英]How does server return JWT token to the client?

这是我第一次遇到 JWT 令牌,我想知道该令牌在首次创建后如何返回给客户端。

它应该出现在Authorization : Bearer header吗?

通常,是客户端在每个请求的Authorization : Bearer header中传递令牌。
我想知道在用户通过身份验证并创建令牌后,服务器如何将此令牌传递给客户端。 也在同一个标​​题中? 在不同的标题中?

在我的情况下,服务器将生成令牌而不是作为响应,而是作为请求的一部分。

例如:-

用户将登录到门户,然后单击指向授权应用程序的链接。 包含用户声明的 JWT 将作为请求的一部分传递给授权应用程序。
这里最好的方法是什么? 获取还是发布? 标题(哪个)? 请求参数? POST 身体? 谢谢!

没有关于如何将 JWT 令牌返回给客户端的标准,但是,请检查此 URL,它可以回答您的问题

https://github.com/dwyl/hapi-auth-jwt2/issues/82#issuecomment-129873082

将 JWT 令牌放在 Authorization 标头中使我们可以灵活地在 Web 应用程序中发送实际响应。 对于仅 REST 的应用程序/API,您可以自由地将 JWT 作为响应正文或 cookie 发送。 重要的是客户端如何存储 JWT 并将其发送回服务器,这在 Authorization 标头(或 Cookie 或 URL 令牌,如果您愿意)中完成👍

至于存在于“wild”中的这种情况,我还没有看到服务器向客户端发送 Authorization 标头的示例,但规范中没有任何内容表明这是一种反模式。 见: http : //self-issued.info/docs/draft-ietf-oauth-v2-bearer.html

如果您想遵守指南,您可以按照以下示例进行操作: http : //self-issued.info/docs/draft-ietf-oauth-v2-bearer.html#ExAccTokResp

人们可能有兴趣知道OAuth 2.0 标准为此目的指定了响应主体:

5.1. 成功响应

授权服务器发出访问令牌和可选的刷新令牌,并通过将以下参数添加到带有 200(OK)状态代码的 HTTP 响应的实体主体中来构造响应:

access_token
必需的。 授权服务器颁发的访问令牌。
[...]

此外,当您可以将令牌放入 url 时,还有另一种策略。 在服务器端,您可以在 url 之后添加令牌,以防您从某些安全服务重定向 例如:

http://[my-app]/index.html?access_token=sadmopwmopmdmvsasom....

然后在 js 中你可以这样得到它:

let url = new URL(window.location);
let accessToken = url.searchParams.get("access_token"); 

但是,请记住,这种方法不能被认为是安全的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM