使用联合身份验证服务从 ASP 网络应用注销时遇到问题

Trouble signing out from ASP web app with Federation Services

我正在尝试从 Intranet 应用程序注销,该应用程序也可以通过使用 Active Directory 联合身份验证服务登录从 Internet 访问。

首先,我刚刚对 https://federation.mycompany.com/adfs/ls/?wa=wsignout1.0 进行了 href。联合页面显示并显示一条消息:"You have been successfully signed out!" 但是如果我返回,我可以再次访问 Web 应用程序而无需再次登录。我还尝试附加一个重定向参数,以便提示用户再次插入凭据。但是重定向不会发生。

后来我在我的一个控制器中创建了一个动作。这是代码:

public ActionResult Logoff()
{
    string absoluteUrl = HttpContext.Request.Url.AbsoluteUri;
    string replyUrl = absoluteUrl.Substring(0, absoluteUrl.LastIndexOf("/")+1);
    WSFederationAuthenticationModule.FederatedSignOut(new Uri(@"https://federation.mycompany.com/adfs/ls/?wa=wsignout1.0"), new Uri(replyUrl));
    return null;
}

但问题是一样的。

我尝试的第三件事是在注销前删除 cookie。但似乎身份验证cookie在域下而不是我的应用程序下,因此无法访问。

如何解决此退出问题?

请帮忙。

我只是假设,但我怀疑您的 ADFS 配置为 windows 身份验证,而您的应用程序具有登录按钮。

如果是这种情况,那么您无法真正从已经过身份验证的 ADFS 注销,它会在应用程序的下一个请求时愉快地重新发布令牌。由于身份验证是使用 MTML/Kerberos 执行的,因此您对此无能为力,并且这是在您关闭之前保留您的凭据的浏览器。

解决方案是将 ADFS 更改为表单模式,看看是否有帮助。