美文网首页
ASP.Net的重定向返回后未使用Session导致Sessio

ASP.Net的重定向返回后未使用Session导致Sessio

作者: SilentDawn | 来源:发表于2018-04-30 16:49 被阅读0次

简介

ASP.Net的session会话状态为InProc时,如果未真正使用过session,在重定向返回后,sessionID会重新分配

背景介绍

SSO,Single Sign On,即单点登录。用户在某SP(Service Provider,服务提供商,如简书)的登录页面选择使用IdP(Identity Provider,身份提供商)的第三方登录功能,快捷登录SP,用户可以使用IdP登录多种SP,而不需要在SP处单独注册的协议和功能。(具体协议内容请自行检索)

问题的发现

ASP.Net测试网站开发过程中使用之前开发的C#版本单点登录SDK的登录功能,向IdP发送的请求中加入了sessionID,在收到IdP的回复后,SP对本地的存储的sessionID和IdP回复中返还的sessionID进行对比,以避免重放攻击。

但对比时发现sessionID永远无法匹配,进行debug发现,SP在请求中加入的sessionID在收到IdP的回复后发生了改变。

问题的关键

搜索并结合代码发现,在SP发送请求时,SP并未真正使用session(向session中存取值),仅仅是获取了sessionID,而ASP.Net的机制为未真正使用session的情况下,发生重定向后返回,会为本次会话重新分配sessionID,因此才导致sessionID不一致。

问题的解决

在初次获取sessionID的情况时,即向其中存入一个任意值,用于表示session已经被使用,防止重新分配sessionID。

补充

以上的解决方案并不完美,希望可以通过配置实现规避sessionID的重新分配,但未搜索到,如果有读者看到,希望回复中分享一下。

相关文章

网友评论

      本文标题:ASP.Net的重定向返回后未使用Session导致Sessio

      本文链接:https://www.haomeiwen.com/subject/qvzzlftx.html