Microsoft.IdentityModel.Tokens 命名空间中的 TokenValidationParameters 类
Microsoft.IdentityModel.Tokens
命名空间中的 TokenValidationParameters
类,用于配置和控制令牌验证的行为。以下是每个参数的含义和作用, 包括其在 JWT 令牌验证过程中的具体作用和可能的使用场景:
Token Validation Parameters
1. AlgorithmValidator
- 属性类型:
Func<string, SecurityToken, TokenValidationParameters, bool>
- 作用: 验证令牌签名算法是否符合预期。
- 使用场景: 限制使用不安全的算法,确保符合安全策略。
2. ActorValidationParameters
- 属性类型:
TokenValidationParameters
- 作用: 提供用于验证嵌套 actor token 的参数。
- 使用场景: 在 OAuth 2.0 委托场景中验证代表用户的服务。
3. AudienceValidator
- 属性类型:
Func<IEnumerable<string>, SecurityToken, TokenValidationParameters, bool>
- 作用: 自定义受众验证逻辑。
- 使用场景: 实现复杂的受众验证规则。
4. _authenticationType
- 属性类型:
string
- 作用: 标识身份验证类型。
- 使用场景: 用于标记或区分不同的身份验证过程。
5. ClockSkew
- 属性类型:
TimeSpan
- 作用: 定义允许的时间偏移量。
- 使用场景: 解决服务器间时钟不同步的问题。
6. ConfigurationManager
- 属性类型:
IConfigurationManager<OpenIdConnectConfiguration>
- 作用: 管理和获取动态配置。
- 使用场景: 动态获取远程服务器的配置。
7. CryptoProviderFactory
- 属性类型:
CryptoProviderFactory
- 作用: 提供加密操作的工厂类。
- 使用场景: 创建加密器、解密器、签名器等。
8. DebugId
- 属性类型:
string
- 作用: 用于调试的标识符。
- 使用场景: 在调试或日志记录过程中,帮助识别和追踪特定的验证请求。
9. IncludeTokenOnFailedValidation
- 属性类型:
bool
- 作用: 指示在验证失败时是否包含令牌。
- 使用场景: 调试和记录,但需注意安全性。
10. IgnoreTrailingSlashWhenValidatingAudience
- 属性类型:
bool
- 作用: 指示在验证受众时是否忽略 URL 的尾部斜杠。
- 使用场景: 允许在验证受众时忽略 URL 尾部斜杠的差异。
11. IssuerSigningKey
- 属性类型:
SecurityKey
- 作用: 用于验证令牌签名的单个密钥。
- 使用场景: 提供签名密钥进行验证。
12. IssuerSigningKeyResolver
- 属性类型:
Func<string, SecurityToken, string, TokenValidationParameters, IEnumerable<SecurityKey>>
- 作用: 动态解析签名密钥的委托。
- 使用场景: 签名密钥动态变化时解析正确的密钥。
13. IssuerSigningKeyResolverUsingConfiguration
- 属性类型:
Func<string, SecurityToken, string, TokenValidationParameters, IEnumerable<SecurityKey>>
- 作用: 使用配置解析签名密钥的委托。
- 使用场景: 依赖配置管理器的动态变化来解析签名密钥。
14. IssuerSigningKeys
- 属性类型:
IEnumerable<SecurityKey>
- 作用: 用于验证令牌签名的密钥集合。
- 使用场景: 当支持多个签名密钥时,提供一个密钥列表供选择。
15. IssuerSigningKeyValidator
- 属性类型:
Func<SecurityKey, SecurityToken, TokenValidationParameters, bool>
- 作用: 自定义签名密钥验证逻辑。
- 使用场景: 对签名密钥进行额外验证(如检查密钥来源)。
16. IssuerSigningKeyValidatorUsingConfiguration
- 属性类型:
Func<SecurityKey, SecurityToken, TokenValidationParameters, bool>
- 作用: 使用配置的签名密钥验证委托。
- 使用场景: 依赖配置进行密钥验证。
17. IssuerValidator
- 属性类型:
Func<string, SecurityToken, TokenValidationParameters, string>
- 作用: 自定义颁发者验证逻辑。
- 使用场景: 实现复杂的颁发者验证规则。
18. IssuerValidatorAsync
- 属性类型:
Func<string, SecurityToken, TokenValidationParameters, Task<string>>
- 作用: 异步自定义颁发者验证逻辑。
- 使用场景: 当颁发者验证涉及异步操作时,使用此委托。
19. IssuerValidatorUsingConfiguration
- 属性类型:
Func<string, SecurityToken, TokenValidationParameters, string>
- 作用: 使用配置的颁发者验证委托。
- 使用场景: 依赖配置的动态变化来验证颁发者。
20. LifetimeValidator
- 属性类型:
Func<DateTime?, DateTime?, SecurityToken, TokenValidationParameters, bool>
- 作用: 自定义令牌有效期验证逻辑。
- 使用场景: 实现特定的有效期验证规则。
21. LogTokenId
- 属性类型:
bool
- 作用: 指示是否记录令牌 ID。
- 使用场景: 用于审计和日志记录,以便在日志中跟踪特定令牌。
22. LogValidationExceptions
- 属性类型:
bool
- 作用: 指示是否记录验证异常。
- 使用场景: 用于调试和监控,记录验证过程中发生的异常。
23. NameClaimType
- 属性类型:
string
- 作用: 指定从令牌中提取用户名称的声明类型。
- 使用场景: 指定哪个声明用于标识用户名称。
24. NameClaimTypeRetriever
- 属性类型:
Func<IEnumerable<Claim>, string>
- 作用: 自定义名称声明类型的检索逻辑。
- 使用场景: 动态决定使用哪个名称声明时,通过此委托实现。
25. PropertyBag
- 属性类型:
IDictionary<string, object>
- 作用: 用于存储额外属性的字典。
- 使用场景: 在验证过程中传递和存储自定义数据,如上下文信息。
26. RefreshBeforeValidation
- 属性类型:
bool
- 作用: 指示在验证令牌之前是否刷新配置。
- 使用场景: 在配置可能更新的环境中,确保使用最新的配置进行验证。
27. RequireAudience
- 属性类型:
bool
- 作用: 指示验证过程中是否需要受众声明。
- 使用场景: 确保令牌有明确的受众,防止令牌被误用。
28. RequireExpirationTime
- 属性类型:
bool
- 作用: 指示验证过程中是否需要过期时间声明。
- 使用场景: 确保令牌有明确的有效期,防止无期限令牌被长期使用。
29. RequireSignedTokens
- 属性类型:
bool
- 作用: 指示验证过程中是否需要令牌是签名的。
- 使用场景: 确保令牌的完整性和真实性。
30. RoleClaimType
- 属性类型:
string
- 作用: 指定从令牌中提取用户角色的声明类型。
- 使用场景: 指定哪个声明用于标识用户角色。
31. RoleClaimTypeRetriever
- 属性类型:
Func<IEnumerable<Claim>, string>
- 作用: 自定义角色声明类型的检索逻辑。
- 使用场景: 动态决定使用哪个角色声明时,通过此委托实现。
32. SaveSigninToken
- 属性类型:
bool
- 作用: 指示在身份验证成功后是否保存令牌。
- 使用场景: 用于后续处理或审计目的,保存成功验证的令牌。
33. SignatureValidator
- 属性类型:
Func<string, SecurityToken, TokenValidationParameters, SecurityToken>
- 作用: 自定义签名验证逻辑。
- 使用场景: 实现特定的签名验证策略。
34. SignatureValidatorUsingConfiguration
- 属性类型:
Func<string, SecurityToken, TokenValidationParameters, SecurityToken>
- 作用: 使用配置的签名验证委托。
- 使用场景: 依赖配置的动态变化来进行签名验证。
35. TokenDecryptionKey
- 属性类型:
SecurityKey
- 作用: 用于解密令牌的单个密钥。
- 使用场景: 提供解密密钥进行验证。
36. TokenDecryptionKeyResolver
- 属性类型:
Func<string, SecurityToken, string, TokenValidationParameters, IEnumerable<SecurityKey>>
- 作用: 动态解析解密密钥的委托。
- 使用场景: 解密密钥动态变化时,通过此委托解析正确的密钥。
37. TokenDecryptionKeys
- 属性类型:
IEnumerable<SecurityKey>
- 作用: 用于解密令牌的密钥集合。
- 使用场景: 当支持多个解密密钥时,提供一个密钥列表供选择。
38. TokenReader
- 属性类型:
Func<string, SecurityToken>
- 作用: 自定义令牌读取逻辑。
- 使用场景: 在解析和处理令牌时需要特定的读取逻辑。
39. TokenReplayCache
- 属性类型:
ITokenReplayCache
- 作用: 用于存储令牌重放信息的缓存。
- 使用场景: 防止令牌重放攻击,通过缓存已使用的令牌 ID。
40. TokenReplayValidator
- 属性类型:
Func<string, DateTime, TokenValidationParameters, bool>
- 作用: 自定义令牌重放验证逻辑。
- 使用场景: 需要特定的重放攻击防护策略时,通过此委托实现。
41. TransformBeforeSignatureValidation
- 属性类型:
Func<string, TokenValidationParameters, string>
- 作用: 在签名验证之前对令牌进行转换。
- 使用场景: 需要对令牌进行预处理以便验证时使用。
42. TryAllIssuerSigningKeys
- 属性类型:
bool
- 作用: 指示是否尝试使用所有提供的签名密钥进行验证。
- 使用场景: 当有多个潜在的签名密钥时,尝试所有可能的密钥进行验证。
43. TypeValidator
- 属性类型:
Func<string, SecurityToken, TokenValidationParameters, bool>
- 作用: 自定义令牌类型验证逻辑。
- 使用场景: 确保令牌类型符合预期,防止不正确类型的令牌被使用。
44. ValidateActor
- 属性类型:
bool
- 作用: 指示是否应该验证嵌套令牌。
- 使用场景: 在处理嵌套令牌时,确保其有效性和真实性。
45. ValidateAudience
- 属性类型:
bool
- 作用: 指示是否应该验证令牌的受众声明。
- 使用场景: 确保令牌的受众与预期一致,防止令牌被不当使用。
46. ValidateIssuer
- 属性类型:
bool
- 作用: 指示是否应该验证令牌的颁发者声明。
- 使用场景: 确保令牌的颁发者是可信的,防止伪造的令牌。
47. ValidateIssuerSigningKey
- 属性类型:
bool
- 作用: 指示是否应该验证令牌的签名密钥。
- 使用场景: 确保使用正确的密钥进行签名验证,防止签名被伪造。
48. ValidateLifetime
- 属性类型:
bool
- 作用: 指示是否应该验证令牌的有效期。
- 使用场景: 确保令牌在有效期内使用,防止过期令牌被使用。
49. ValidateSignatureLast
- 属性类型:
bool
- 作用: 指示是否应该在最后进行签名验证。
- 使用场景: 当有特定的验证顺序需求时,确保签名验证在其他验证之后进行。
50. ValidateTokenReplay
- 属性类型:
bool
- 作用: 指示是否应该验证令牌是否被重放。
- 使用场景: 防止令牌重放攻击,确保每个令牌仅被使用一次。
51. ValidateWithLKG
- 属性类型:
bool
- 作用: 指示是否应该使用最后已知良好的配置进行验证。
- 使用场景: 在配置更新失败的情况下,使用最后已知的有效配置进行验证。
52. ValidAlgorithms
- 属性类型:
IEnumerable<string>
- 作用: 指定允许的签名算法。
- 使用场景: 限制令牌签名算法,以确保使用符合安全策略的算法。
53. ValidAudience
- 属性类型:
string
- 作用: 指定允许的单个受众。
- 使用场景: 确保令牌的受众与预期的单个受众匹配。
54. ValidAudiences
- 属性类型:
IEnumerable<string>
- 作用: 指定允许的受众集合。
- 使用场景: 当令牌可能有多个受众时,提供一个受众列表进行匹配。
55. ValidIssuer
- 属性类型:
string
- 作用: 指定允许的单个颁发者。
- 使用场景: 确保令牌的颁发者与预期的单个颁发者匹配。
56. ValidIssuers
- 属性类型:
IEnumerable<string>
- 作用: 指定允许的颁发者集合。
- 使用场景: 当令牌可能来自多个颁发者时,提供一个颁发者列表进行匹配。
57. ValidTypes
- 属性类型:
IEnumerable<string>
- 作用: 指定允许的令牌类型。
- 使用场景: 确保令牌类型符合预期,防止不符合要求的令牌被使用。
这些参数用于配置和控制令牌验证过程,确保应用程序的安全性和可靠性。通过合理配置这些参数,可以应对不同的业务需求和安全要求。