gpt4 book ai didi

security - JWT 如何确保其值(value)观?

转载 作者:行者123 更新时间:2023-12-02 19:00:46 26 4
gpt4 key购买 nike

我了解 JWT 是安全的。但只是想知道一些我无法理解的概念。

假设身份验证服务器“A”将签名的 token 发送到应用程序服务器。如果我没记错的话签名是由服务器“A”上的私钥完成的。现在应用程序服务器可以解密 token 并使用公钥验证信息。我还读到 JWT 是独立的,它同时保存数据和签名。

我看到的一些示例在验证时没有使用任何安全 key 。如果我没记错的话,RS256 不需要任何特定 key ,我认为它将使用公共(public)证书来解密。

我的疑问是,如果 JWT 是自包含的,为什么不能在两者之间更改数据。

例如假设服务器“A”发送以下信息

header.user1email.signature

如果黑客将数据替换为

header.user2email.signature

用的是自己的私钥,怎么可能是有效数据呢?如何确定它来自服务器“A”?

我知道这里缺少一些基础知识,请帮忙?

最佳答案

JWT token 由三个对象构造,并通过基于 SHA256 哈希的消息身份验证代码(又名 HMACSHA256 )按以下方式传递:

HEADER - 包含 token 的算法和类型(通常为 JWT)

{
"alg": "HS256",
"typ": "JWT"
}

PAYLOAD - 实际传递的数据,是无状态/自包含部分

{
"name": "John Doe"
}

最后,你的 secret 变成了这样的东西(从 jwt.io 中提取)

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJuYW1lIjoiSm9obiBEb2UifQ.
xuEv8qrfXu424LZk8bVgr9MQJUIrp1rHcPyZw_KSsds

最酷的是,现在,您的应用程序不需要每次需要信息时都与其后端数据库进行交互,而是可以从 JWT token 中提取信息。一旦 secret 或有效负载以任何方式被篡改,签名就会失效。

这是因为 token 通常经过签名和加密,需要您拥有私钥 (SECRET) 才能实际对其进行解码。

编辑:经过SO侦察后,我发现了一个可爱的example由米施提供。我鼓励您阅读它!

关于security - JWT 如何确保其值(value)观?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35150542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com