我有一个现有的WebForms应用程序,我们现在正在创建一个新的MVC应用程序。它们都使用我们自己的自定义提供程序进行身份验证,使用相同的数据库。
我可以使用相同的凭据分别成功登录每个应用程序,但我现在想要的是实现单点登录(即:如果用户已经登录app1,app2会自动检测用户的设置并确定他已登录)。
我完成了我的作业并阅读了参考文献here,here和here等。
到目前为止,我已完成以下工作:
在两个网站上设置相同的machineKey:
在两个网站上设置相同的表单身份验证:
尽管如此,我还没有设法让SSO工作。我已经管理了“单点注销”,当用户注销一个网站时,他已经与另一个网站签约。
有什么我想念的吗?
我想要一个仅配置解决方案,不需要我进行任何编码。
答案 0 :(得分:2)
我只是为了关闭而回答我自己的问题。
我的SSO无法正常工作的原因是因为主要的现有网站有自己的cookie和会话管理器,并且不符合Forms身份验证的规则。它叫
FormsAuthentication.SignOut();
登录完成后不久。
我尝试了上面提到的配置,包括3个不同的网站,MVC和WebForms的混合,不同的管道(集成与经典),以及我们的自定义会员提供商,这一切都非常有效。
因此,只要您的应用程序不使用表单身份验证执行有趣的操作,上面定义的步骤就可以正常工作。