我正在使用ADFS 2.0对我的mvc 3.0 Web应用程序进行身份验证。我将依赖方的TokenLifeTime设置为1440(24小时),但是登录后逐步浏览代码时,可以看到会话令牌的ValidTo日期距离现在只有600分钟(10小时)。如果我将TokenLifeTime更改为小于600,则日期时间将与我登录时的预期时间相符。即,如果将TokenLifeTime设置为5,则会话令牌上的ValidTo日期将是我登录后的5分钟。
我没有找到关于此值的最大值的任何参考,但是我也无法解释为什么我无法将会话令牌上的ValidTo时间增加到超过600分钟。
所以...
TokenLifeTime的最大值是600吗?
还有其他影响ADFS发出的会话令牌上的ValidTo时间的因素吗?
我一直在研究这个问题,我想我已经提出了一个可行的解决方案-我还没有因为愤怒而使用它,所以我不能确定它没有任何问题!
从本质上讲,它会在令牌创建之后但开始使用它之前拦截令牌。然后将其替换为令牌,该令牌包含原始文档的所有基础细节,但validTo
日期要长得多,具体取决于的值validForDays
void WSFederationAuthenticationModule_SessionSecurityTokenCreated(object sender, SessionSecurityTokenCreatedEventArgs e)
{
var currentToken = e.SessionToken;
var validForDays = 1;
e.SessionToken = new SessionSecurityToken(
currentToken.ClaimsPrincipal,
currentToken.Context,
currentToken.EndpointId,
DateTime.UtcNow,
DateTime.UtcNow.AddDays(validForDays));
e.SessionToken.IsPersistent = true;
}
这位于Global.asax.cs中
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句