Class OneTimeUseConditionValidator
java.lang.Object
org.opensaml.saml.saml2.assertion.impl.OneTimeUseConditionValidator
- All Implemented Interfaces:
ConditionValidator
ConditionValidator used for OneTimeUse conditions.
Supports the following ValidationContext static parameters:
-
SAML2AssertionValidationParameters.COND_ONE_TIME_USE_EXPIRES: Optional. If not supplied, defaults to the validator-wide value supplied at construction, or the default value, as retrieved viagetReplayCacheExpires().
Supports the following ValidationContext dynamic parameters:
- None.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringCache context name.private org.slf4j.LoggerLogger.private final ReplayCacheReplay cache used to track which assertions have been used.private final DurationTime for disposal of value from cache. -
Constructor Summary
ConstructorsConstructorDescriptionOneTimeUseConditionValidator(ReplayCache replay, Duration expires) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionprotected StringgetCacheValue(Assertion assertion) Get the string value which will be tracked in the cache for purposes of one-time use detection.protected InstantgetExpires(Assertion assertion, ValidationContext context) Get the one-time use expiration time for the assertion being evaluated.protected DurationGet the configured validator cache expiration interval.validate(Condition condition, Assertion assertion, ValidationContext context)
-
Field Details
-
CACHE_CONTEXT
Cache context name. -
log
@Nonnull private org.slf4j.Logger logLogger. -
replayCache
Replay cache used to track which assertions have been used. -
replayCacheExpires
Time for disposal of value from cache.
-
-
Constructor Details
-
OneTimeUseConditionValidator
Constructor.- Parameters:
replay- reply cache used to track which assertions have been usedexpires- time for disposal of tracked assertion from the replay cache. May be null, then defaults to 8 hours
-
-
Method Details
-
getServicedCondition
- Specified by:
getServicedConditionin interfaceConditionValidator
-
validate
@Nonnull public ValidationResult validate(@Nonnull Condition condition, @Nonnull Assertion assertion, @Nonnull ValidationContext context) throws AssertionValidationException - Specified by:
validatein interfaceConditionValidator- Throws:
AssertionValidationException
-
getReplayCacheExpires
Get the configured validator cache expiration interval.- Returns:
- the configured cache expiration interval
-
getExpires
Get the one-time use expiration time for the assertion being evaluated.Defaults to
Instant.now().plus(getReplayCacheExpires()).A subclass might override this to base expiration on data from the assertion or the validation context.
- Parameters:
assertion- the SAML 2 Assertion being evaluatedcontext- the current validation context- Returns:
- the effective one-time use expiration for the assertion being evaluated
-
getCacheValue
@Nonnull protected String getCacheValue(@Nonnull Assertion assertion) throws AssertionValidationException Get the string value which will be tracked in the cache for purposes of one-time use detection.- Parameters:
assertion- the SAML 2 Assertion to evaluate- Returns:
- the cache value
- Throws:
AssertionValidationException- thrown if there is a problem calculating the cached value
-