我的ASP.NET MVC 4应用程序受到SSO(OAM)的保护,并在IIS上运行ISAPI筛选器。收到我的应用程序的请求后,它将被ISAPI筛选器拦截并重定向到SSO。用户必须在SSO上登录,然后返回到我的应用程序。设置SSO身份验证后的FormsAuthentication
已通过身份验证的用户(通过SSO)的用户名与我的应用程序在HTTP请求标题中共享。
Request.Headers["username"]
我所试图实现的是 - SSO身份验证后,我的username = Request.Headers["username"]
应用程序中设置FormsAuthentication
。通过这种方式,SSO对我的应用程序保持透明,用户身份可在HttpContext对象中使用,另外,我(开发人员)可以有效地为特定角色使用授权属性。
为了实现这一点 - 我连接到Session_Start()
,阅读Request.Headers["username"]
,设置FormsAuthentication
Cookie。我为我的应用程序获得此SSO用户的Forms-Authenticated。
但我的问题是,当我退出(FormsAuthentication.Signout
),我把它重定向到另一页的应用程序中,这将触发新的会话(我可以看到在session_start触发时发生这种情况)
我在做的正确的事情 - SSO之后的FormsAuthentication?如果没有,为什么不,然后如何让我的应用程序知道SSO身份验证的用户?
谢谢tvanfosson,它的真实。 SSO提供程序发出一个令牌(cookie),它已经保护了我的整个应用程序,除了一个资源是我的注销URL。 OAM配置为使我的注销URL上的SSO Cookie无效,仅此处用户失去其提供的SSO身份。目前很好。 这是问题开始的地方。由于此注销URL是我的应用程序的一部分,只要用户注销(会话被终止,FormsAuth.Signout调用)并重定向到此URL。 SSO Cookie无效,但认为它的新请求Session_Start再次被调用。 –