Asp.net 通过ADFS和WIF与WS-Federation的身份验证生存期 一些背景

Asp.net 通过ADFS和WIF与WS-Federation的身份验证生存期 一些背景,asp.net,authentication,wif,adfs,ws-federation,Asp.net,Authentication,Wif,Adfs,Ws Federation,我在一个ASP.NET MVC web应用程序上工作,该应用程序使用WIF实现联合身份验证。 出于我无法控制的原因,我不得不使用一个代理STS,它一方面充当我的MVC应用程序的IdP,但同时通过ADFS服务器实现自己的联合身份验证。 这样,MVC应用程序中的用户身份验证过程如下所示: 用户进入MVC应用程序 应用程序将用户重定向到代理STS进行身份验证 代理STS将用户重定向到ADFS服务器进行身份验证 ADFS服务器对用户进行身份验证并重定向回代理STS 代理STS使用ADFS服务器发出的相同

我在一个ASP.NET MVC web应用程序上工作,该应用程序使用WIF实现联合身份验证。
出于我无法控制的原因,我不得不使用一个代理STS,它一方面充当我的MVC应用程序的IdP,但同时通过ADFS服务器实现自己的联合身份验证。
这样,MVC应用程序中的用户身份验证过程如下所示:

  • 用户进入MVC应用程序
  • 应用程序将用户重定向到代理STS进行身份验证
  • 代理STS将用户重定向到ADFS服务器进行身份验证
  • ADFS服务器对用户进行身份验证并重定向回代理STS
  • 代理STS使用ADFS服务器发出的相同身份验证信息将用户重定向回应用程序
  • ADFS服务器不是我可以直接访问的(在管理方面),而代理STS只是一个我完全控制的小服务(使用教程实现)


    问题(以及我试图做什么来解决它) 使用上述设置,我注意到用户的身份验证在大约一个小时后消失,然后他们需要重新身份验证,因此现在我正在寻找延长身份验证生命周期的方法。
    据我所知,它应该足以延长由代理STS发行的安全令牌的生命周期,我确实做到了这一点。但这并没有解决问题-用户仍然需要经常重新验证。
    所以我试着做了以下几件事,希望能有所帮助:

  • 在MVC应用程序的ws-federation配置中将persistentCookiesOnPassiveRedirects选项设置为true,过期时间为1周(以确保身份验证cookie不会因会话过期而丢失)
  • 将MVC应用程序中的HTTP会话生存期设置为持续一周(以确保服务器端的安全令牌不会因会话过期而丢失)
  • 将代理STS发出的令牌的安全令牌生存期设置为1周(我通过检查MVC应用程序收到的安全令牌来确保应用了该生存期)
  • 在代理STS上执行项目符号1和2中描述的操作
  • 将MVC应用程序池的IIS自动应用程序池回收时间设置为每周一次
  • 以上这些似乎都不能解决问题,但我试着:

  • 将ADFS服务器发出的令牌的安全令牌生存期设置为8小时
  • 结果,认证持续时间变长,甚至长达10-11小时


    问题 在上述场景中,什么控制WS-Federation的身份验证持续时间?
    我尝试过的上述哪些事情应该真正与我的问题相关,哪些不应该影响我的问题(具体地说,我想了解ADFS令牌寿命是否真的应该有任何影响,如果是的话——为什么,或者我只是在测试中运气不好,而这真的是可能有助于解决这个问题的其他因素)


    提前感谢!

    您已经找到了很多相关参数。我将只讨论WIF/.NET部分和SAML令牌。而不是池回收等。它们是不同的主题。如果您真的想控制这一点,您必须查看SAML消息和令牌中的XML

    问题之一是SAML1和SAML2令牌之间存在差异。此外,SAML协议中存在一些有效时间戳,WIF和IdP之间不使用这些时间戳

    总结:
    WIF似乎对SessionToken使用了条件。这是SAML1.1中唯一可用的东西。好了。
    ValidateToken(令牌)调用DetectReplayedTokens()。 SecurityTokenHandler.DetectReplayedTokens(SecurityToken)方法验证传入令牌(SubjectConfirmationData@notorAfter)的有效性。WIF使用的SAML 1.1中不存在该令牌Conditions@NotOnOrAfter. 这对于SAML2中的重播检测基本上是正确的。对于SAML1.1来说有点傻(太宽,太长)。

    应用程序可以(并且确实)在TokenHandler或WSFAM和SesAM的事件中重写此行为。例如,请参阅Vittorio about Slided Expiration