C# 安全令牌到期

C# 安全令牌到期,c#,security,C#,Security,我正在应用程序中实现安全令牌功能。您可以指定过期时间和/或最大使用次数 如果同时指定了这两个条件,则会检查这两个条件;如果指定了其中一个条件,则只检查该条件 我的问题是,我应该如何处理令牌没有到期时间或最大值的情况 是否应该对用户进行身份验证,而不是身份验证,或者是否应该引发异常 if (this.ExpireTime.HasValue && this.MaxUses.HasValue) retval = DateTime.Now < this.Expir

我正在应用程序中实现安全令牌功能。您可以指定过期时间和/或最大使用次数

如果同时指定了这两个条件,则会检查这两个条件;如果指定了其中一个条件,则只检查该条件

我的问题是,我应该如何处理令牌没有到期时间或最大值的情况

是否应该对用户进行身份验证,而不是身份验证,或者是否应该引发异常

 if (this.ExpireTime.HasValue && this.MaxUses.HasValue)
        retval = DateTime.Now < this.ExpireTime.Value && this.Counter < this.MaxUses.Value;
    else if (this.ExpireTime.HasValue)
        retval = DateTime.Now < this.ExpireTime.Value;
    else if (this.MaxUses.HasValue)
        retval = this.Counter <= this.MaxUses.Value;
    else
    {
       throw new ApplicationException("Invalid AuthToken: ExpireTime And MaxUses are null") 
    }
if(this.ExpireTime.HasValue&&this.MaxUses.HasValue)
retval=DateTime.Nowretval=this.Counter您需要选择不过期的含义。考虑到应用程序的用途及其用例,令牌是否应该永远有效?或者创建一个max expiration/max uses更合适吗?

如果不是所有信息都存在,则应引发“invalid authtoken”异常。令牌应始终过期,例如,如果会话id未过期,则表示违反了。这些系统背后的安全性是一个漏洞,如果它们没有过期,那么攻击者最终可以猜测其价值

没有到期时间或最大使用的令牌是什么意思?什么时候会发生这种情况?当代码的相关部分设置这些值时,在什么情况下会保留这些值为空?