我已经跟随this link了解了ADFS2.0的WIF应用程序,我在同一台机器上安装了ADFS2.0和示例应用程序(在IIS中),现在我可以使用Active Directory用户名和密码登录到我的示例应用程序,但问题是,虽然我从示例应用程序注销,它会将我重定向到login.aspx页面,但当我单击浏览器中的后退按钮并刷新时,我仍然可以登录。这意味着我的会话在我的应用程序.Do中不会过期,我还需要在ADFS中清除已登录的会话?如果是这样,我该如何做?我已经使用了"FederatedPassiveSignInStatus“工具,我假设它将从应用程序和ADFS中注销。
this是我在gif中的演示。
<wif:FederatedPassiveSignInStatus ID="FederatedPassiveSignInStatus1"
runat="server" OnSignedOut="OnFederatedPassiveSignInStatusSignedOut"
SignInButtonType="link" FederatedPassiveSignOut="true" SignOutAction="FederatedPassiveSignOut" />
protected void OnFederatedPassiveSignInStatusSignedOut(object sender, EventArgs e)
{
WSFederationAuthenticationModule authModule = FederatedAuthentication.WSFederationAuthenticationModule;
string signoutEndpoint = "https://test-server.test.localhost/ClaimsAwareWebAppWithManagedSTS/Login1.aspx"; // This can be stored in your configuration app settings
string signoutUrl = WSFederationAuthenticationModule.GetFederationPassiveSignOutUrl(signoutEndpoint, authModule.Realm, null);
WSFederationAuthenticationModule.FederatedSignOut(new Uri(signoutUrl), new Uri("https://test-server.test.localhost/ClaimsAwareWebAppWithManagedSTS/Default.aspx"));
}发布于 2015-05-30 11:51:02
看起来cookie已从浏览器中清除。但是,STS创建的cookie不是。您需要确保STS正确接收注销请求,因为在使用FederatedSignOut时应该是这种情况。
这个链接有一个很好的退出方法:Claims Aware MVC4 App using WIF Identity and Access tool in .Net 4.5 Part II
if (HttpContext.Request.IsAuthenticated)
{
WSFederationAuthenticationModule instance = FederatedAuthentication.WSFederationAuthenticationModule;
instance.SignOut(false);
SignOutRequestMessage request = new SignOutRequestMessage(new Uri(instance.Issuer), instance.Realm);
return new RedirectResult(request.WriteQueryString());
}https://stackoverflow.com/questions/30530026
复制相似问题