asp.net-mvc-3 - 如何修复来自 Shibboleth 的 SAML SSO 后的浏览器

在 .NET MVC (3) 上构建 SAML2 服务提供商 Web 应用程序。我们正在使用 ComponentSpace 的 SAML2 库进行身份验证,不是Shibboleth SP。这是相关的 Controller 逻辑:

public class SignOnController : Controller
{
    // constructor-inject _services

    [HttpPost]
    public ActionResult SendAuthnRequest(string userName, string returnUrl)
    {
        // this users ComponentSpace internally to push user to IdP
        _services.SamlServiceProvider.SendAuthnRequest(args);
        return new EmptyResult();
    }

    [HttpPost]
    public ActionResult ReceiveAuthnResponse()
    {
        var samlResponse = _services.SamleServiceProvider
            .ReceiveSamlResponse(args);
        // ...
        return Redirect(samlResponse.RelayResourceUrl ?? defaultUrl);
    }
}

最终用户登陆中继 url 或默认登录页面。但是,当他们单击链接,然后单击后退按钮时,浏览器将返回到 Shibboleth IdP 服务器上的错误页面。之后,浏览器的前进和后退按钮最终变得毫无用处。

我是不是在上述两种方法中做错了什么?发送时我应该返回 View() 而不是 EmptyResult() 吗?有什么方法可以重置浏览器历史记录以防止重复回发到 IdP?这是我可以在 ComponentSpace 的实现中配置的东西吗?

最佳答案

据我所知,您在 IdP i WBSSO SAML2 配置文件中进行身份验证时点击了返回按钮?我不知道您列举的组件,但在 Shibboleth 情况下,它总是以错误页面结尾。我可能是错的,但如果你考虑 SP->IdP 通信的性质,我相信没有其他选择,除非你重新实现一些东西。

关于asp.net-mvc-3 - 如何修复来自 Shibboleth 的 SAML SSO 后的浏览器后退按钮问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11548668/

相关文章:

linux-kernel - wait_for_completion 与 wakeup_interr

ios - 我的 iOS 开发者证书或私钥在 git 中吗?

qt - 从 Qt Designer 上的不同项目读取 "resource"文件

asp.net-mvc - asp.net razor中有类似eval()的函数吗?

asp.net - 转移到服务器场中的不同服务器时,IsPostBack 为假?

php - 递归菜单树函数

sql-server - MSDTC 设置/属性正在重置

symfony - doctrine2 ifnull

ruby-on-rails-3 - Rails 应用程序占用所有服务器内存

scala - 如何将 request.body 转换为字节数组以计算 MD5?