HTTP 获取的“承载者”身份验证令牌中的格式是什么

HTTP 获取的“承载者”身份验证令牌中的格式是什么

我在想要复制的 HTTP 请求标头中遇到了“Bearer”身份验证(我想了解 API)。

这是标题字段:

authentication : Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJhdXRoX3Rva2VuIjoiNzgzYmFjNjA5MmRmIiwiaWQiOjgxLCJpc3N1ZWRUaW1lIjoxNjYzMjM2MDY2LjU5Mn0=.ue-WEprMVaRe7-weCxqZ8UHq7KR5XufhEliAzAsDM03

我知道“Bearer”一词之后的第一部分,直到点为止,是一个带有令牌(我有)和一些元信息的 base64 编码 json。但我不明白点之后的部分。这是什么样的编码?当我发送请求时,我收到一条消息,告诉我 JWT 无效:

{"message":"Unauthorized call: Invalid JWT","data":{"message":"auth_check_fail"},"code":401}

任何帮助深表感谢。

答案1

答案的关键是智威汤逊。它是用于“在双方之间安全地表达主张”的标准。(引文)这样您就可以以纯文本(实际上是 base64 编码的 json)交换消息,确保没有人篡改该消息。

正如对您的问题的评论所建议的那样,最后一部分是使用 SHA256 哈希的 HMAC,用于验证令牌的完整性。

如果你没有以其他方式篡改它,则验证问题可能是由于在声明 JWT 算法的第一部分之后缺少 .(点)

尝试添加后eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

你的 Bearer 看起来应该是这样的:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRoX3Rva2VuIjoiNzgzYmFjNjA5MmRmIiwiaWQiOjgxLCJpc3N1ZWRUaW1lIjoxNjYzMjM2MDY2LjU5Mn0=.ue-WEprMVaRe7-weCxqZ8UHq7KR5XufhEliAzAsDM03

如果您想复制 API,则需要您自己的身份验证(这些 JWT 使用生成消息的人和验证消息的人之间的共享秘密),您不能使用您尝试复制的 API 生成的令牌。

如果您想将 API 与自己编写的库一起使用,那么您可以复制并粘贴他们给您的承载者(他们应该已经将承载者提供给您了。)

相关内容