我正在研究在ASP.NET(MVC Core 1.0)中使用基于声明的授权。当设置ClaimsIdentity
时,我提供了一个键/值字符串对列表来表示每个Claim
。例如:
List<Claim> claims = new List<Claim>
{
new Claim("UserID", user.ID),
new Claim("Name", user.Name),
new Claim("Role", "basic")
};
我的理解是,我可以使用任何想用的键/值。但我注意到有一些预定义的键可通过 ClaimsType
类 使用。因此,我可能会使用其中一些预定义的键:
List<Claim> claims = new List<Claim>
{
new Claim(ClaimTypes.Sid, user.ID),
new Claim(ClaimTypes.Name, user.Name),
new Claim(ClaimTypes.Role, "basic")
};
问题:
如果我使用预定义的键名,那么每个键所分配的实际值是否有任何规则/限制,还是由应用程序定义?例如,在
ClaimTypes.Sid
中放入数据库主键是否可以,或者ASP.NET对ClaimTypes.Sid
应包含什么有某些特定的期望?是否存在任何要求使用的
ClaimTypes
,还是完全由应用程序决定包括或不包括哪些内容?我想答案可能取决于与之交互的具体第三方认证服务,但是在不使用任何第三方认证的自包含ASP.NET项目的简单情况下又如何呢?ASP.NET本身是否有任何要求?