使用联合身份验证服务从 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 更改为表单模式,看看是否有帮助。
我正在尝试从 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 更改为表单模式,看看是否有帮助。