我正在使用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));
}
运行此代码后,我仍然可以浏览到用户访问过的任何其他网站。 但是我退出了我签署的网站。
联邦注销是否有效?
非常感谢
答案 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);