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.Gets the element or schema type QName of the condition handled by this validator.validate(Condition condition, Assertion assertion, ValidationContext context) Validates the given condition.
-
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
Gets the element or schema type QName of the condition handled by this validator.- Specified by:
getServicedConditionin interfaceConditionValidator- Returns:
- element or schema type QName of the statement handled by this validator
-
validate
@Nonnull public ValidationResult validate(@Nonnull Condition condition, @Nonnull Assertion assertion, @Nonnull ValidationContext context) throws AssertionValidationException Validates the given condition.- Specified by:
validatein interfaceConditionValidator- Parameters:
condition- condition to be evaluatedassertion- assertion bearing the conditioncontext- current Assertion validation context- Returns:
- the result of the condition evaluation
- Throws:
AssertionValidationException- if there is a problem processing the validation operation
-
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
-