【发布时间】:2019-07-25 16:48:06
【问题描述】:
我们正在使用JWT Nuget 创建和验证令牌。这是我们用来创建令牌的代码
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;
}
我的理解是,这不会加密令牌,因为我能够通过访问 jwt.io 来解析令牌并能够读取内容。我想加密令牌,使其不应该被解析。我在JWT Nuget 中找不到任何可以加密令牌的方法。
那么如何使用JWT Nuget 对令牌进行签名和加密?
编辑:
我了解 JWT 不需要任何加密,因为只有经过身份验证的用户才能读取令牌,这意味着,我正在阅读我自己的内容,而且实际通信将通过安全层进行。所以实际上还没有必要加密令牌,我的要求是令牌不应该是人类可读的
【问题讨论】:
-
令牌应该被签名而不是加密。令牌包含由签名确认的声明。这些不是秘密包裹。 JWT 解决了一个不同的安全概念。 en.wikipedia.org/wiki/Information_security
-
Jwt 可以加密,但 JWT Nuget 似乎不支持这种行为
标签: c# asp.net-web-api encryption jwt