SessionAuthenticationModule有时不会从cookie反序列化所有声明

时间:2012-06-06 19:15:41

标签: asp.net-mvc wif claims-based-identity claims

我在MVC应用程序和自定义逻辑中使用WIF和基于声明的安全性,以便在进行身份验证后创建具有相应声明的ClaimsPrincipal。我将一些标准声明(如角色和名称)分配给委托人,但也会在适用的情况下分配自定义声明。

我使用URI标准化了标准化的角色和名称声明后的自定义声明,例如

新索赔(“http://schemas.acme.com/2012/04/identity/claims/create”,“http://schemas.acme.com/2012/04/identity/resources/customer”)

一切都运作良好。我使用SessionAuthenticationModule将用户会话存储在cookie中,并在每次请求时对其进行补充。

我今天注意到,在有人使用相同的用户类型登录后,我的自定义声明不会从Cookie中反序列化。标准声明(名称/角色)存在,但自定义声明不存在。

有没有人见过这个或知道为什么会这样?

1 个答案:

答案 0 :(得分:0)

原来我正在添加通过引用消失的声明。我有一个预定义静态声明的类,我会根据需要添加到ClaimsPrincipal。我以这种方式添加的任何声明后来在该类型的另一个用户登录时被删除。我的解决方案是将静态属性更改为KeyValuePairs并为每个用户创建新的声明。