当SAML2 idP不支持注销时,如何执行本地注销?

时间:2019-11-15 04:50:35

标签: asp.net asp.net-mvc saml-2.0 sustainsys-saml2

我正在尝试将我们的ASP.NET MVC网站集成为服务提供者,以允许用户针对第三方SAML2 idP进行身份验证。我正在使用SustainSys.Saml2.Owin(2.3.0)nuget程序包。

我正在执行登录过程,但是事实证明,注销用户更加困难。

运行idP的第三方表示他们不支持注销,并且我们必须自己将用户注销我们的应用程序。他们要求我们“创建一个新会话”并“进行本地注销”。

我应该指出,由于我们无法访问idP或正在执行Web浏览器测试,而这又变得更加困难,并且idP由不会说英语的实体运营,因此所有通信和测试都通过第三方翻译进行。

他们是否真的有可能不支持注销,或者翻译中丢失了某些内容?我相信SAML2 idP由定制的公司网站中的某些Oracle代码/服务处理。

在AccountController上的注销操作如下:

public ActionResult LogOff()
        {
            if (System.Configuration.ConfigurationManager.AppSettings["SAML.Enabled"] == "false")
            {
                AuthenticationManager.SignOut();
                return RedirectToAction("Index", "Home");
            }
            else
            {
                // Having SAML2 enabled doesn't mean the user was logged in via SAML, but this seems to
                // handle that case and do the logout properly
                return Redirect("~/SAML2/Logout");
            }
        }

如果实际上我不应该因为他们声称不支持SAML2 / Logout而重定向到SAML2 / Logout,那么如何确保清除客户端浏览器中的所有cookie?

在测试中,当下一个用户使用同一浏览器访问该网站时,我们的应用程序似乎知道他们尚未登录,并显示了登录选项。如果他们单击该按钮以对idP进行身份验证,则它们似乎将被带到idP,然后几乎立即弹回,被身份验证为先前的用户?我该如何阻止?

编辑:我应该注意到idP的元数据确实描述了两个SingleLogoutService,一个HTTP-POST和一个HTTP-Redirect,这使我认为它们确实支持某种注销。但是,当我将客户端重定向到〜/ Saml2 / Logout时,它会导致idP网站上出现错误页面,并且没人能告诉我原因。我没有给他们我们的公钥-他们说“不需要”。

0 个答案:

没有答案