Asp.net web api Web API和.NET 4.5:索赔和权利

Asp.net web api Web API和.NET 4.5:索赔和权利,asp.net-web-api,claims-based-identity,.net-4.5,rights,claims,Asp.net Web Api,Claims Based Identity,.net 4.5,Rights,Claims,是否有使用索赔进行权利管理的最佳实践 我正在使用新的.NET4.5和新的索赔类。 目前我做的事情如下: new ClaimsIdentity(new List<Claim> { new Claim("Username", user.UserName), new Claim("UserNumber", user.UserNumber.ToString(

是否有使用索赔进行权利管理的最佳实践

我正在使用新的.NET4.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", "")
                    }
new ClaimsIdentity(新列表
{
新声明(“用户名”,user.Username),
新声明(“UserNumber”,user.UserNumber.ToString()),
新主张(“创设权”),
新索赔(“编辑权”,“”)
}
我添加了没有价值的权利主张。 稍后,我检查是否存在右键。不需要值(如true/false)-如果存在,则其隐含的“true


有更好的方法吗?

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

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


这提供了一定的灵活性,因为您的授权策略可以独立于您的声明发布系统进行更改和发展。例如,您可以发布一个角色声明,将某人标识为管理员,还可以发布一个身份验证方法声明,指定用户如何使用智能卡或用户名和密码登录例如密码。这使您能够定义访问策略,您只需要管理员角色即可访问某些资源,而其他更敏感的资源则需要管理员角色并使用强身份验证机制。这还意味着您可以根据上下文在多个不同的访问策略之间切换xt.您的在线威士忌商店可能在美国使用年龄超过21岁的声明,但您网站的加拿大版本需要超过18或19岁的声明。将您的authZ与authN分开可以实现这种灵活性。

您好,也许我应该提到我使用的是ASP.NET Web API。身份验证和授权在fram中是分开的工作。我将身份验证属性添加到控制器的方法中,并且只有在用户经过身份验证的情况下才能调用这些方法。在方法中,我检查声明,并且允许用户这样做。简单的“在管理组中”不适用于我。我的系统中有许多权限。我可以为每个权限添加一个组:(分组为“允许创建”、“允许删除”等),但我认为这不是一个好主意。