我可以使用相同的 "secret" 使用 JWT 创建 Server 和 Client 之间的数据交互吗?
Can I create data interaction between Server and Client with JWT, which use the same "secret"?
我尝试使用 JWT 创建 Web 应用程序:
如果用户向服务器发送请求,我可以 运行 服务器上的进程并将数据以网络令牌的形式发送回浏览器,这让我想到了这个问题:
如何在浏览器中验证此服务器响应,并使用 JWT 和可从服务器接受的密码向服务器发送新请求?
在服务器上,来自浏览器请求的 JWT 应该被验证。
我的考虑是在客户端创建一个具有相同 "secret" 的 JWT,但这对攻击者来说是可读的,因为可以读取源代码(开发者控制台)。
有办法吗?
//Create request JWT
Request 1 --> {head: ...; data:..., secrete: secret}
//Request should be checkted on the server (secrete)
// create a Resonse JWT and send back to the Client
Resonse 1 --> {head: ...; data:..., secrete: secret}
//Client verify the Respons JWT by the secrete
对私钥保密。通过网络发送它们是一种危险的解决方案,因为如果它们被盗,整个系统就会崩溃。您可以使用非对称 RSA 密钥对代替对称密钥对。 JWT 使用私钥签名并使用 public
进行验证
在通常情况下,当用户未被识别时,服务器需要在浏览器中向用户提供凭据,并颁发新的 JWT 令牌。浏览器中的客户端应用程序在后续的身份验证请求中包含 JWT 令牌。服务器验证令牌签名。
您建议浏览器也发布 JWt 令牌作为一种身份验证形式。考虑以下因素:
- 您将需要一个非对称密钥对
- 在浏览器中生成密钥,不通过网络发送私钥
- 保持密钥安全:我建议使用本机网络加密api,因为与任何其他加密库不同,它允许在不公开内容的情况下生成和使用密钥,即不能被盗
- 将public密钥发送到服务器并将其与用户帐户相关联
我尝试使用 JWT 创建 Web 应用程序:
如果用户向服务器发送请求,我可以 运行 服务器上的进程并将数据以网络令牌的形式发送回浏览器,这让我想到了这个问题:
如何在浏览器中验证此服务器响应,并使用 JWT 和可从服务器接受的密码向服务器发送新请求?
在服务器上,来自浏览器请求的 JWT 应该被验证。
我的考虑是在客户端创建一个具有相同 "secret" 的 JWT,但这对攻击者来说是可读的,因为可以读取源代码(开发者控制台)。
有办法吗?
//Create request JWT
Request 1 --> {head: ...; data:..., secrete: secret}
//Request should be checkted on the server (secrete)
// create a Resonse JWT and send back to the Client
Resonse 1 --> {head: ...; data:..., secrete: secret}
//Client verify the Respons JWT by the secrete
对私钥保密。通过网络发送它们是一种危险的解决方案,因为如果它们被盗,整个系统就会崩溃。您可以使用非对称 RSA 密钥对代替对称密钥对。 JWT 使用私钥签名并使用 public
进行验证在通常情况下,当用户未被识别时,服务器需要在浏览器中向用户提供凭据,并颁发新的 JWT 令牌。浏览器中的客户端应用程序在后续的身份验证请求中包含 JWT 令牌。服务器验证令牌签名。
您建议浏览器也发布 JWt 令牌作为一种身份验证形式。考虑以下因素:
- 您将需要一个非对称密钥对
- 在浏览器中生成密钥,不通过网络发送私钥
- 保持密钥安全:我建议使用本机网络加密api,因为与任何其他加密库不同,它允许在不公开内容的情况下生成和使用密钥,即不能被盗
- 将public密钥发送到服务器并将其与用户帐户相关联