【问题标题】:Why is the payload part needed for JWT auth?为什么 JWT 身份验证需要有效负载部分?
【发布时间】:2018-02-04 17:00:39
【问题描述】:

header(灰色)、payload(红色)、signature(浅绿色)

这是一个关于身份验证协议的问题。服务器端有下面的密钥,这意味着它可以通过解密签名来识别客户端是谁。所以下面的payload没有必要暴露在http包中。

或者,如果服务器端的每个用户都有一个 secret_key,则需要有效负载。但是对于这种情况,服务器必须为每个用户存储每个密钥,这意味着这不是“无状态”协议的情况。但是,我听说 JWT auth 是“无状态的”。

【问题讨论】:

    标签: authentication jwt


    【解决方案1】:

    服务器端没有跟踪每个用户的每个 JWT 令牌, 相反,当用户发送带有 JWT 令牌的请求时,它将作为 authentication:"the JWT token go here" 添加到标头中。

    然后服务器收到此请求,它会查看身份验证标头内部并使用只有服务器知道的密钥解码此令牌,一旦令牌被解码,服务器就会查看令牌内部的数据是否可以是用户 id 或其他内容,并查看用户 id 是否有效。

    【讨论】:

    • 是的。密钥只有一个,并且在服务器端秘密保存,没有有效载荷,服务器无法检查令牌是否被伪造。对吗?
    • 如果标头没有授权令牌,则服务器丢弃有效负载并发送error: you have to provide an authorization header
    • 然后,我想知道每个 JWT 令牌的每个用户的每个令牌的标头值是否始终相同。我指的是图片中的标头,而不是像您这样的通用 http 标头。
    • 你图片中的头部值总是一样的,因为这是一个secret_key编码,如果你改变了secret_key,那么头部值就会改变。这个header是用payload编码的,因为每个用户的JWT token都不一样,
    • 似乎对什么是 JWS 存在误解。使用 JWS(签名令牌)时,服务器端的密钥用于检查签名。这里没有加密过程。如果您更改密钥并且未使用有效负载进行编码,则标头不一定会更改。
    猜你喜欢
    • 1970-01-01
    • 2017-05-17
    • 2019-07-13
    • 1970-01-01
    • 2016-07-15
    • 2020-12-04
    • 2013-12-24
    • 2011-09-29
    • 2023-03-25
    相关资源
    最近更新 更多