我正在尝试从Intranet应用程序注销,也可以通过使用Active Directory联合身份验证服务从Internet访问该应用程序。
首先,我刚对https://federation.mycompany.com/adfs/ls/?wa=wsignout1.0
进行了href。联合页面显示并显示一条消息:“您已成功注销!”但是,如果我返回,则可以再次访问该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属于域而不是我的应用程序,因此无法访问。
我该如何解决此退出问题?
请帮助。
答案 0 :(得分:0)
我只是假设但我怀疑您的应用程序具有“登录”按钮时,您的ADFS已配置为Windows身份验证。
如果是这种情况,那么您就无法真正从已通过身份验证的ADFS中注销,并且它会在应用程序发出下一个请求时愉快地重新发行令牌。由于身份验证是使用MTML / Kerberos执行的,因此您无法执行任何操作,并且浏览器会保留您的凭据,直到您将其关闭为止。
解决方案是将ADFS更改为“表单”模式,看看是否有帮助。