Windows身份基础-注销或更新声明
本文关键字:更新 声明 注销 身份 Windows | 更新日期: 2023-09-27 18:13:56
我使用Windows Identity foundation管理登录到我们的网站。
当用户登录时,我正在使用他的请求中的一些信息放入声明中。一切正常,但现在我需要管理这个场景:
- 用户已经登录,认证并且有一个有效的令牌。
- 但是用户决定再次浏览(通过从另一个站点重定向)
- 所以他的请求信息是不同的。
-
我想要
- 签出他-这样他就可以用他的新信息自然地创建一个新的令牌
- 或者更新他现有的令牌。
我的问题是:
- 我如何退出Windows身份基础?
- 或如何更新现有索赔?
我试过这个代码:
public void ExpireClaims(HttpContextBase httpContextBase)
{
var module =
httpContextBase.ApplicationInstance.Modules["WSFederationAuthenticationModule"] as
WSFederationAuthenticationModule;
if (module == null)
{
return;
}
module.SignOut(true);
}
但是module总是null。
和我试了这个:
public void FederatedSignOut(string replyUrl)
{
WSFederationAuthenticationModule.FederatedSignOut(null, new Uri(replyUrl));
}
但是当我这样做时,我得到一个空引用异常。
实际上sign-out就是删除cookie所以:
FormsAuthentication.SignOut
或
FederatedAuthentication.SessionAuthenticationModule.SignOut
或
FederatedAuthentication.SessionAuthenticationModule.DeleteSessionTokenCookie
。
或者使用FederatedPassiveSignInStatus
(应该在工具箱中)。将属性SignOutAction
设置为FederatedSignOut
,控件也将清除STS会话。