UniqueClaimTypeIdentifier究竟发生了什么?

时间:2017-03-14 01:19:15

标签: asp.net claims-based-identity

我正在进行基于声明的用户角色身份验证。对于此身份验证,我测试了以下内容:

var identity = new ClaimsIdentity(new[] {
                new Claim(ClaimTypes.Name, name),
                new Claim(ClaimTypes.Email, email),
                new Claim(ClaimTypes.StreetAddress, Address),
                new Claim(ClaimTypes.Role, "Admin")
},

我的身份验证工作正常,但我意识到我应该实现某种安全性,以避免用户可以篡改设置角色。

因此我偶然发现了这一点,应该添加到Global.asax

AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.Email;

我似乎无法完全理解上面的代码是做什么的?我是对的,如果我说它给了用户持有的cookie,一个由email制作的唯一令牌,然后用于验证系统对用户的合法性?

顺便说一句,我是新手,所以对我很轻松:-)

1 个答案:

答案 0 :(得分:0)

我不太确定你的问题意味着什么,但让我试着清除一些事情。

首先,我们来谈谈您的AntiForgeryConfig代码行。它的作用是配置AntiForgeryToken以使用Email声明来标识请求(根据电子邮件创建令牌)。 AntiForgeryToken允许您信任请求并阻止跨站点请求伪造(CSRF)。

它分为两部分实施。首先,您需要将AntiForgeryToken添加到表单(@Html.AntiForgeryToken)。其次,您需要在控制器的操作中验证令牌(ValidateAntiForgeryTokenAttribute)。

Here is a link to explain what CSRF

Here is a link with up to date code how to implement it

作为旁注,你说... to avoid that the user can tamper the set role。 AntiForgeryToken对篡改角色没有任何作用。篡改角色与您的身份验证过程更相关。