如何使用Windows Identity Foundation在服务器上存储用户数据而不是cookie



我正在使用WIF开发MVC应用程序。

我正在尝试使用以下内容将一些会话变量存储在ClaimsIdentity中:

ClaimsIdentity identity = HttpContext.User.Identity as ClaimsIdentity;
identity.AddClaim(new Claim("foo", "bar"));

这似乎把所有东西都储存在饼干里。

我正在想办法把这些数据存储在服务器上。我环顾四周,但没有发现任何真正有用的东西(说到WIF,我完全是个新手)。

有简单的方法吗?

您可以将身份验证模块设置为引用模式,以便将声明存储在服务器上的会话中——这样,cookie只包含一个映射回声明的标识符。

最简单的方法是处理SessionSecurityTokenCreated事件,并在创建令牌时在令牌上设置属性,这可以通过在global.asax中实现以下方法来完成:

void WSFederationAuthenticationModule_SessionSecurityTokenCreated(object sender, SessionSecurityTokenCreatedEventArgs e) {
    e.SessionToken.IsReferenceMode = true;
}

有关参考,请参阅msdn 上的WIF会话管理概述

相关内容

  • 没有找到相关文章