[英]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.