1

我正在使用 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 时间吗?

4

1 回答 1

2

我一直在看这个,我想我已经想出了一个可行的解决方案——我还没有在愤怒中使用它,所以我不能确定它不包含任何问题!

本质上,它在创建令牌之后但在任何东西开始使用它之前拦截令牌。然后将其替换为包含原始所有基础细节但日期更长的令牌,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

于 2013-12-12T12:52:11.320 回答