如何将JWT添加到授权标头?

mic*_*mut 3 php authentication http-headers jwt

如下面的幻灯片所示,客户端必须在下一个请求时将其发送jwt回服务器Authorization Header.

在此输入图像描述

但是如何定义authorisation header并将JWT添加到服务器?

我目前的状态是:

  1. 用户通过发送usernamepasword到服务器post.
  2. 服务器创建了 JWT
  3. 服务器将签名发送JWT回客户端并将其保存在cookie中.

现在我的问题:

如果是登录

据我了解,现在有必要将JWT发送回服务器.服务器验证令牌并将其发回以完成登录过程.

我怎样才能添加JWTauthentication header

如果运行进程并从计算中接收数据:

我是否理解,客户端必须JWT将登录信息从服务器发送到服务器以及第二个JWT数据库?或者我可以发送数据POST吗?

Los*_*Jon 8

所以,你对JWT非常正确.将数据从客户端发送到服务器(在创建JWT之后)时,您需要做的就是将其添加到请求标头中.许多人会尝试与OAuth保持相同的路径,并添加类似于以下节点片段的承载令牌:

var rp = require('request-promise');
options = {
  method: GET,
  uri: 'https://www.example.com/api/sample',
  headers: {
    Authorization: "Bearer <insert_your_JWT_here>"
  }
}
rp(options).then(function(res){
  <handle_response>
}
Run Code Online (Sandbox Code Playgroud)

当然,我知道你提到过PHP,但是工作流程是一样的,只是语法不同.

现在,为了验证此令牌是否存在,服务器需要验证()该令牌对于已定义的秘密是否有效.在客户端发出的每个请求中,对于授权端点,您需要每次都发送此令牌.


小智 5

上面的用户要求使用基于浏览器的方法来设置授权标头,或者全部标头。

(Node.js 在服务器上运行。我意识到上面接受的答案是指服务器对另一台服务器进行身份验证,并且就服务器到服务器通信而言,调用此“客户端代码”的响应者在技术上是正确的遵循谁向谁请求授权的客户端-服务器模型,但这并没有解决真正的问题:浏览器如何修改其授权标头以包含存储的令牌等。

除了 html href 不提供访问或更改发送的标头的方法之外,还有发送请求的 javascript 方法。可以使用标准 XHR 来演示如何通过 javascript 设置标头

xhr.open('GET', url, true);
xhr.setRequestHeader("Authorization", "Bearer " + yourtoken);
xhr.send();
Run Code Online (Sandbox Code Playgroud)

注意:关键字后面应该有一个空格Bearer

您也许能够找到将令牌写入呈现页面(隐藏元素?)的 php 模板化方法,但浏览器中运行的 javascript 提供了操作请求标头的方法。值得注意的是,cookie 是针对给定域的所有请求自动发送的,而本地/会话存储通常需要手动设置它们。