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>
  • 作用: 指定允许的令牌类型。
  • 使用场景: 确保令牌类型符合预期,防止不符合要求的令牌被使用。

这些参数用于配置和控制令牌验证过程,确保应用程序的安全性和可靠性。通过合理配置这些参数,可以应对不同的业务需求和安全要求。