4

是否有使用权利管理声明的最佳实践?

我正在使用新的 .net 4.5 和新的声明类。目前我做这样的事情:

new ClaimsIdentity(new List<Claim>
                    {
                        new Claim("Username", user.UserName),
                        new Claim("UserNumber", user.UserNumber.ToString()),
                        new Claim("Creation_Right", ""),
                        new Claim("Edit_Right", "")
                    }

我添加了没有价值的权利声明。稍后我检查是否存在权利。不需要值(如真/假) - 如果存在,则其隐含的“”。

有没有更好的方法来做到这一点?

4

1 回答 1

1

也许。看起来您正在做的是将身份验证和授权合并在一起,在身份验证时做出访问策略决策。

您还可以选择将授权组件与身份验证组件分开。声明表示一组有关用户的信息,可用于做出授权决定。也就是说,您的身份验证步骤会产生一组声明,并且每当您的用户尝试访问某些内容时,这些声明都会被提供给授权组件,该组件会做出决定。

这提供了一些灵活性,因为您的授权策略可以独立于您的索赔发布系统而改变和发展。例如,您可以发出将某人标识为管理员的角色声明,还可以发出指定用户如何登录的身份验证方法声明,例如使用智能卡或用户名和密码。这使您能够定义访问策略,您可以只需要管理员角色来访问某些资源,而其他更敏感的资源需要管理员角色并使用强大的身份验证机制。这也意味着您可以根据上下文在多个不同的访问策略之间切换。您的在线威士忌商店可能会在美国使用 ageOver21 声明,但您网站的加拿大版本需要 over18 或 over19 声明。

于 2012-06-27T15:38:14.240 回答