You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ITfoxtec SAML2中FedAuth Cookie过期时间的正确获取方法咨询

在ITfoxtec框架中获取FedAuth Cookie的正确过期时间

你直接通过HttpCookie.Expires获取到的时间不准确,原因是ITfoxtec.Identity.Saml2生成的FedAuth Cookie默认是会话级Cookie(未设置Expires属性),实际的过期逻辑由SAML断言中的NotOnOrAfter声明控制,而非Cookie本身的Expires字段。

要获取正确的过期时间,需要解析Cookie中的SAML断言,从中提取NotOnOrAfter值,具体实现方式如下:

方法一:使用Saml2Session快速获取

利用框架提供的Saml2Session类可以直接读取会话的过期时间,无需手动解析断言:

Dim saml2Session = New Saml2Session(HttpContext.Current)
If saml2Session.IsValid() Then
    Dim actualExpiryTime As DateTime = saml2Session.GetNotOnOrAfter()
    ' 使用actualExpiryTime进行验证逻辑
End If

方法二:手动解析SAML响应

如果需要更底层的控制,可以手动解密并解析FedAuth Cookie中的SAML响应:

' 初始化SAML配置(需与你的项目框架配置一致,比如证书、Issuer等)
Dim saml2Config = New Saml2Configuration()
saml2Config.Load(HttpContext.Current.Server.MapPath("~/Saml2Config.xml")) ' 从配置文件加载,或手动设置参数

' 从Cookie中读取并解析SAML响应
Dim saml2AuthnResponse = New Saml2AuthnResponse(saml2Config)
saml2AuthnResponse.ReadSamlResponse(Request.Cookies("FedAuth").Value)

If saml2AuthnResponse.IsValid() Then
    Dim actualExpiryTime As DateTime = saml2AuthnResponse.Assertion.Conditions.NotOnOrAfter
    ' 使用actualExpiryTime进行验证逻辑
End If

注意事项

  • 确保你的SAML配置(如解密证书)与初始化ITfoxtec框架时的配置完全一致,否则无法正确解析Cookie内容。
  • NotOnOrAfter时间是SAML断言中约定的会话过期时间,框架会自动在该时间后使FedAuth会话失效。

内容的提问来源于stack exchange,提问作者Carlos Alfredo Tejeda Araujo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 11:28:12