猿问

使用联合服务从 ASP Web 应用程序注销时出现问题

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


首先,我只是做了一个 href https://federation.mycompany.com/adfs/ls/?wa=wsignout1.0。联邦页面显示并显示一条消息:“您已成功注销!” 但是如果我返回,我可以再次访问网络应用程序而无需再次登录。我还尝试附加一个重定向参数,以便提示用户再次插入凭据。但是重定向不会发生。


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


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在域下而不是我的应用程序下,因此无法访问。


如何解决此退出问题?


请帮忙。


森栏
浏览 115回答 1
1回答

肥皂起泡泡

我只是假设,但我怀疑您的 ADFS 配置为用于 Windows 身份验证,而您的应用程序具有登录按钮。如果是这种情况,那么您就不能真正从已通过身份验证的 ADFS 注销,并且它会在应用程序的下一次请求时愉快地重新发出令牌。您无法对此做任何事情,因为身份验证是使用 MTML/Kerberos 执行的,并且该浏览器会保留您的凭据,直到您关闭它。解决方案是将 ADFS 更改为 Forms 模式,看看是否有帮助。
随时随地看视频慕课网APP
我要回答