ITfoxtec SAML2中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
相关产品推荐
相关产品推荐

