我是ASP.NET MVC程序员,并且已经研究过对我的项目采用基于声明的身份验证。
基于声明的身份验证似乎尝试提供各种信息以及令牌,但我想问一下它的使用范围。
我们可以看到ClaimTypes [MSDN],声明可以拥有角色,隐私相关信息(姓氏,省,移动电话)或计算机友好信息(CookiePath)等。
它们都存储在数据库中的Type-Value列表中(AspNetUserClaims)。它是我认为的信息范围的混合物。有没有理由以这种方式设计?或者,将隐私信息置于索赔中是否危险? (我知道如果你感到危险,不要使用它,但设计可能会导致其使用。)
答案 0 :(得分:0)
声明与隐私无关,如果信息已存储在服务器端,则即使您不使用声明,也可能发生隐私问题。
声明用于授权传入的请求。想一下像你的身份证或护照一样的索赔。
首先,发行人需要时间仔细验证您并发出文件(身份证,护照,索赔集)。然后,其他相关方可以依赖这些信息而无需进一步重新验证用户。因此,如果我的身份证上写着我40岁而依赖方信任我的身份证发行人,那么依赖方假设我已经40岁了。
这也意味着当您的应用程序发出声明存储在Cookie中以建立会话时,您并不需要所有那里的信息,包括手机号码,鞋子的大小或超速罚单的最后日期。
相反,您只发布某些授权所需的这些声明。需要某处的电子邮件地址?把它放在索赔中。不需要这个装置吗?排除它。