C#身份验证的那些事儿 之 ClaimTypes
前言
C#源码中提供了ClaimTypes的定义,下面看一下其属性及其用途。
内容
1. 用户信息相关
Name:用户名
NameIdentifier:是一个用于表示用户唯一标识符的声明类型, 通常是数据库中的用户ID或其他唯一值。
Surname: 姓氏
MobilePhone:手机号
HomePhone:家庭电话
OtherPhone:其他电话
Thumbprint:指纹
Role:指定实体角色的声明的URI
DateOfBirth:是一个用于表示用户出生日期的声明类型。
Email:邮件地址
Gender:性别
GivenName:给定名称
Country:国家地区
StateOrProvince:所在的州或省
PostalCode:是一个用于表示用户邮政编码的声明类型。
Locality:用户所在地区或城市。
StreetAddress:街道地址
2. windows相关
DenyOnlySid:是一个用于表示用户的“拒绝 SID”(Security Identifier)的声明类型。拒绝 SID 是一种安全标识符,用于在访问控制中明确拒绝某个用户或组的权限。这个声明通常在处理复杂的安全策略时使用。
DenyOnlyPrimarySid:指定实体上仅拒绝主SID的声明的URI,是与 Windows 安全模型相关的一个声明类型,表示一个用户的 Deny-Only 安全标识符 (SID),主要用于处理与安全标识符相关的权限控制和授权,通常在涉及 Windows 安全性和 Active Directory 的场景中使用。
DenyOnlyPrimaryGroupSid:指定实体上仅拒绝主组SID的声明的URI;
DenyOnlyWindowsDeviceGroup:指定设备的Windows仅拒绝组SID的声明的URI
WindowsAccountName:表示Windows账户名称,通常以“DOMAIN\Username”格式表示。这个声明通常用于存储与Windows身份验证相关的用户账户信息,特别是在使用Windows身份验证的应用程序中在需要与Windows安全模型集成的应用程序中非常有用。确保在处理Windows账户名称时遵循安全最佳实践,避免泄露敏感信息。在多域环境中,可能需要处理不同域的账户名称,开发者应考虑到这一点以确保系统的兼容性。
WindowsDeviceClaim:表示Windows设备声明,通常用于存储与Windows设备相关的信息,特别是在涉及设备身份验证和管理的场景中。
WindowsDeviceGroup:表示Windows设备组声明,通常在需要对设备进行分组管理或权限控制的应用程序中使用。
WindowsUserClaim:表示Windows用户声明,通常用于存储与Windows用户相关的信息,特别是在涉及用户身份验证和授权的场景中。
WindowsFqbnVersion:表示Windows设备的完全合格名称(FQBN)版本声明,通常用于涉及设备识别和版本管理的上下文中。
WindowsSubAuthority:表示Windows安全标识符(SID)中的子权限部分,通常用于涉及用户权限和安全性管理的场景。
3. 系统及账户
System:系统
Sid:安全标识符(SID)用于标识用户、组和计算机账户的唯一号码
GroupSid:表示用户所属组的安全标识符(SID,Security Identifier),它通常用于身份验证和授权场景,特别是在与Windows身份验证和Active Directory集成时。
PrimaryGroupSid:表示用户的主组安全标识符(SID,Security Identifier),通常用于身份验证和授权场景,特别是在与Windows身份验证和Active Directory集成时。
PrimarySid:表示用户的主安全标识符(SID,Security Identifier),通常用于身份验证和授权场景,特别是在与Windows身份验证和Active Directory集成时。
IsPersistent:表示用户身份验证是否是持久性,通常用于指示用户的登录状态是否在会话结束后仍然有效,通常与“记住我”功能相关联。
SerialNumber:表示用户的序列号,通常用于标识用户的唯一性,尤其是在涉及设备、证书或其他需要唯一标识符的场景中。
Anonymous:表示匿名用户,通常用于处理未经过身份验证的用户,帮助开发者在应用程序中区分已认证用户和匿名用户。
Spn:表示服务主体名称(Service Principal Name, SPN),SPN是一个唯一标识符,用于在网络中标识服务实例,通常与Kerberos身份验证相关联。
Upn:表示用户主体名称(User Principal Name, UPN),UPN是一个用于标识用户的唯一标识符,通常采用电子邮件格式(例如,username@domain.com),并广泛用于身份验证和授权。
UserData:表示用户数据,通常用于存储与用户相关的额外信息,这些信息可能不适合放在其他标准声明类型中。UserData的内容可以是任意字符串,因此在使用时应确保数据的格式和内容符合预期。由于UserData可以包含敏感信息,开发者应当采取适当的安全措施来保护这些数据,防止未授权访问。
Version:表示用户的版本信息,通常用于存储与用户或用户会话相关的版本数据,例如应用程序版本、用户协议版本或其他重要的版本控制信息。
Dns:指定与计算机名或X.509证书的主体或颁发者的替代名称关联的DNS名称。
Uri:url地址
Webpage:网页CookiePath: 指定cookie路径的声明的URI
X500DistinguishedName:X.500可分辨名称声明的URI
Actor:参与者
4.秘钥
Dsa:(全称为 "Digital Signature Algorithm")是一个不太常用的声明类型,通常出现在和数字签名及加密相关的上下文中。
Rsa :Rsa加密
Hash:哈希值
5.权限
Expiration: 表示某个声明的过期时间,它通常用于存储一个日期时间值,指示该声明何时失效。
Expired: 表示某个声明是否已经过期,它通常是一个布尔值,指示该声明是否仍然有效。
Authentication:表示用户身份验证信息的声明类型,通常用于标识用户的身份验证状态和相关信息,帮助开发者在应用程序中管理用户的身份验证过程。
AuthenticationMethod: 指定对实体进行身份验证的方法
AuthorizationDecision:表示用户授权决策的声明类型。这个声明通常用于指示用户是否被授权访问特定资源或执行特定操作,帮助开发者在应用程序中实施细粒度的访问控制。
AuthenticationInstant:表示身份验证时间的声明(Claim),它表明用户在什么时间进行了身份验证。此属性的值通常是一个 DateTime 类型的时间戳。
以上是所有属性,常用的属性有:
Name:用户名
NameIdentifier:是一个用于表示用户唯一标识符的声明类型, 通常是数据库中的用户ID或其他唯一值。
MobilePhone:手机号
Role:指定实体角色的声明的URI
Email:邮件地址
Sid:安全标识符(SID)用于标识用户、组和计算机账户的唯一号码
IsPersistent:表示用户身份验证是否是持久性,通常用于指示用户的登录状态是否在会话结束后仍然有效,通常与“记住我”功能相关联。
Spn:表示服务主体名称(Service Principal Name, SPN),SPN是一个唯一标识符,用于在网络中标识服务实例,通常与Kerberos身份验证相关联。
Upn:表示用户主体名称(User Principal Name, UPN),UPN是一个用于标识用户的唯一标识符,通常采用电子邮件格式(例如,username@domain.com),并广泛用于身份验证和授权。
UserData:表示用户数据,通常用于存储与用户相关的额外信息,这些信息可能不适合放在其他标准声明类型中。UserData的内容可以是任意字符串,因此在使用时应确保数据的格式和内容符合预期。由于UserData可以包含敏感信息,开发者应当采取适当的安全措施来保护这些数据,防止未授权访问。
Version:表示用户的版本信息,通常用于存储与用户或用户会话相关的版本数据,例如应用程序版本、用户协议版本或其他重要的版本控制信息。
Hash:哈希值
Expiration: 表示某个声明的过期时间,它通常用于存储一个日期时间值,指示该声明何时失效。
Expired: 表示某个声明是否已经过期,它通常是一个布尔值,指示该声明是否仍然有效。
Authentication:表示用户身份验证信息的声明类型,通常用于标识用户的身份验证状态和相关信息,帮助开发者在应用程序中管理用户的身份验证过程。
AuthenticationMethod: 指定对实体进行身份验证的方法