WIF - FederatedSignOut不会将用户退出所有网站

时间:2011-11-22 14:50:35

标签: wif

我正在使用Windows Identity Foundation。 (对于一些MVC 2.0站点)

我遇到了在受WIF保护的所有网站中签名的人的真正问题。

看起来我的退出只是在当前网站上签名。

这是我的代码

public void FederatedSignOut(string replyUrl)
       {             

        var authModule = FederatedAuthentication.WSFederationAuthenticationModule;
        WSFederationAuthenticationModule.FederatedSignOut(new Uri(authModule.Issuer),  new Uri(replyUrl));
     }

运行此代码后,我仍然可以浏览到用户访问过的任何其他网站。 但是我退出了我签署的网站。

联邦注销是否有效?

非常感谢

2 个答案:

答案 0 :(得分:1)

WIF有一个FederatedPassiveSignInStatus控件,可以为您完成工作。

基本上,这会向STS发送“wa = wsignout1.0”WS-Federation命令。但是,STS可能无法实现此目的。 ADFS确实。

答案 1 :(得分:0)

  

退出我的应用程序外部sts时,我会注销我的应用程序但仍然保持登录 ntexternal sts OKTA

WSFederationAuthenticationModule fam = FederatedAuthentication.WSFederationAuthenticationModule;`

    // Native FederatedSignOut doesn't seem to have a way for finding/registering realm for singout, get it from the FAM
    string wrealm = string.Format("wtrealm={0}", fam.Realm);

    // Check where to return, if not set ACS will use Reply address configured for the RP
    string wreply = !string.IsNullOrEmpty(reply) ? reply : (!string.IsNullOrEmpty(fam.Reply) ? fam.Reply : null);

    // Create basic url for signout (wreply is set by native FederatedSignOut)
    string signOutUrl = WSFederationAuthenticationModule.GetFederationPassiveSignOutUrl(fam.Issuer, null, wrealm);


    WSFederationAuthenticationModule.FederatedSignOut(new Uri(signOutUrl), !string.IsNullOrEmpty(wreply) ? new Uri(wreply) : null);