gpt4 book ai didi

c# - 加密 JWT token

转载 作者:行者123 更新时间:2023-12-04 01:46:47 25 4
gpt4 key购买 nike

我们正在使用 JWT Nuget创建和验证 token 。这是我们用来创建 token 的代码

private string CreateAccessToken(Dictionary<string, object> payload)
{
IJwtAlgorithm algorithm = new HMACSHA256Algorithm();
IJsonSerializer serializer = new JsonNetSerializer();
IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder);
var token = encoder.Encode(payload, GetJWTKey());
return token;
}

我的理解是,这不会加密 token ,因为我能够通过访问 jwt.io 来解析 token 。并且能够阅读内容。我想加密 token ,使其不应该被解析。我无法在 JWT Nuget 中找到任何方法通过它我可以加密 token 。

那么我该如何使用 JWT Nuget 对 token 进行签名和加密呢? ?

编辑:

我知道 JWT 不需要任何加密,因为只有经过身份验证的用户才能读取 token ,这意味着我正在阅读我自己的内容,而且实际通信将通过安全层进行。所以实际上还不需要加密 token ,我的要求是 token 不应该是人类可读的

最佳答案

您的理解是正确的,但是您遗漏了 JWT 的一个重要特性:加密 token 不是 JWT 的目的。
该算法使用的 secret 用于签署 token 而不是加密它,有关更多信息,请查看 RFC 7515 .
正如下面评论中所建议的,还有 RFC 7516 , Json Web加密(JWE)。
要在 C# 应用程序中使用 JWE,您必须使用 System.IdentityModel.Tokens.Jwt 包,然后使用类似的东西:

var handler = new JwtSecurityTokenHandler();
var tokenDescriptor = new SecurityTokenDescriptor
{
Audience = "audience",
//other property
EncryptingCredentials = new X509EncryptingCredentials(new X509Certificate2("path/to/public/key"))
};

关于c# - 加密 JWT token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54982133/

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