代码之家  ›  专栏  ›  技术社区  ›  Prasad P

无法使我的web应用程序从ADFS注销

  •  1
  • Prasad P  · 技术社区  · 11 年前

    我有一个网络应用程序,并在adfs的回复方中添加了它。对于我的应用程序,我使用了标识和访问工具。我的应用程序是基于.Net 4.5和MVC 4架构构建的。对于登录,我被重定向到登录页面,它使用我的ADFS active directory身份验证。我面临的问题是注销。到目前为止,我已经尝试了以下事情,
    1. <a href="<myADFSserver>/adfs/ls/?wa=wsignout1.0&wreply=https://localhost">Logout</a>

    这会重定向到注销屏幕,但单击后退按钮后,我可以返回到我的应用程序。如果我在下一个选项卡中打开我的应用程序,它仍然会在没有任何凭据提示的情况下打开。
    2.

    string absoluteUrl = HttpContext.Request.Url.AbsoluteUri;
    string replyUrl = absoluteUrl.Substring(0, absoluteUrl.LastIndexOf("/") + 1);
    WSFederationAuthenticationModule.FederatedSignOut(null, new Uri(replyUrl));
    

    这给了我一个错误,说注销url不能为空。进入URl时,情况与第1点相同。

    我在上面的代码中遗漏了什么,或者可能的解决方案是什么。

    2 回复  |  直到 10 年前
        1
  •  3
  •   Prasad P    10 年前

    以下代码使其工作。谢谢你的支持。。

        public void LogOut()
        {          
            var module = FederatedAuthentication.WSFederationAuthenticationModule;
            module.SignOut(false);
            var request = new SignOutRequestMessage(new Uri(module.Issuer), module.Realm);
            Response.Redirect(request.WriteQueryString());
        }
    
        2
  •  1
  •   John Gasper    11 年前

    您应该能够为每个依赖方配置注销URL。根据我的经验,ADFS为它启动会话的每个服务使用一个(隐藏的)iframe,并将RP应用程序的注销页面作为iframe的src传递。

    这应该使#1和#2都能工作。