gpt4 book ai didi

c# - 为什么即使我将 Expires 设置为 null,JWT 也会包含 EXP 声明?

转载 作者:行者123 更新时间:2023-12-04 15:42:16 24 4
gpt4 key购买 nike

我需要不朽的 JWT token 。当然,我可以为 Expires 设置一些大的值,但我更喜欢在我的 token 中根本没有 exp 声明。标准 .net 核心 CreateEncodedJwt 允许在 expires、notBefore、issuedAt 中传递 null。我为所有这些都传递了 null,我的 token 包含 exp token (+1 小时)。到底是怎么回事?!

var securityKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes("FF804E8A-2A0E-4F94-A6F5-8325822F8DF5"));

var claims = new List<Claim>
{
new Claim("type1", "value1"),
new Claim("type2", "value2")

};

var token = new JwtSecurityTokenHandler().CreateEncodedJwt(
issuer: null,
audience: null,
subject: new ClaimsIdentity(claims),
notBefore: null,
issuedAt: null,
expires: null,
signingCredentials: new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256));

这是解析工具: https://jwt.io

这是我的 token :

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0eXBlMSI6InZhbHVlMSIsInR5cGUyIjoidmFsdWUyIiwibmJmIjoxNTY1NDI5MzY2LCJleHAiOjE1NjU0MzI5NjYsImlhdCI6MTU2NTQyOTM2Nn0.UvJiOQNO_yMzdenf5jAotPHj7zrcEUApraezzcVSicA



这是它的内部外观:

{ "type1": "value1", "type2": "value2", "nbf": 1565429366, "exp": 1565432966, "iat": 1565429366 }



请帮助摆脱nbf,exp,iat。提前致谢!

最佳答案

JwtSecurityTokenHandle的简化版创建 token 的代码包含下一部分:

if (SetDefaultTimesOnTokenCreation && 
(!expires.HasValue || !issuedAt.HasValue || !notBefore.HasValue))
{
DateTime now = DateTime.UtcNow;
if (!expires.HasValue)
expires = now + TimeSpan.FromMinutes(TokenLifetimeInMinutes);

if (!issuedAt.HasValue)
issuedAt = now;

if (!notBefore.HasValue)
notBefore = now;
}
所以你基本上必须设置 SetDefaultTimesOnTokenCreation为假。和标准 JWT空无一物 exp宣称:

The "exp" (expiration time) claim identifies the expiration time onor after which the JWT MUST NOT be accepted for processing.


Its value MUST be a numbercontaining a NumericDate value. Use of this claim is OPTIONAL.


因此,JWT 格式验证器的所有正确实现都应该成功验证 token ,而不会在内部声明。

关于c# - 为什么即使我将 Expires 设置为 null,JWT 也会包含 EXP 声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57440983/

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