我正在尝试从Intranet应用程序注销,该应用程序也可以通过使用Active Directory联合身份验证服务登录从Internet访问。
首先,我刚刚给https://federation.mycompany.com/adfs/ls/?wa=wsignout1.0
做了一个href。联合页面显示并显示一条消息:“您已成功注销!”但如果我回去,我可以再次访问网络应用程序,而无需再次登录。我还尝试附加重定向参数,以便提示用户再次插入凭据。但重定向不会发生。
后来我在我的一个控制器中创建了一个Action。这是代码:
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更改为Forms模式,看看它是否有帮助。