#### [Abblix\.Oidc\.Server](https://www.abblix.com/en/docs/api/abblix-oidc-server 'index')
### [Abblix\.Oidc\.Server\.Common\.Configuration](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.Configuration 'Abblix\.Oidc\.Server\.Common\.Configuration')

## RevocationRetentionOptionsValidator Class

Fails at startup on a revocation setting that would let a revocation report success and do nothing\.

```csharp
public sealed class RevocationRetentionOptionsValidator : Microsoft.Extensions.Options.IValidateOptions<Abblix.Oidc.Server.Common.Configuration.OidcOptions>
```

Inheritance [System\.Object](https://learn.microsoft.com/en-us/dotnet/api/system.object 'System\.Object') → RevocationRetentionOptionsValidator

Implements [Microsoft\.Extensions\.Options\.IValidateOptions&lt;](https://learn.microsoft.com/en-us/dotnet/api/microsoft.extensions.options.ivalidateoptions-1 'Microsoft\.Extensions\.Options\.IValidateOptions\`1')[OidcOptions](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.Configuration.OidcOptions 'Abblix\.Oidc\.Server\.Common\.Configuration\.OidcOptions')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/microsoft.extensions.options.ivalidateoptions-1 'Microsoft\.Extensions\.Options\.IValidateOptions\`1')

### Remarks
A revocation is one record with an expiry\. At zero or below, the record expires as it is written, so
`RevokeSubjectAsync` returns successfully and the tokens it was called about keep working \- a
security control that reports success and does nothing, which is the shape that gets discovered by an
incident rather than by a test\.

Only the value that can never work is rejected. A value that is merely too short for a deployment's
longest-lived refresh token cannot be detected here: token lifetimes are per client and the client store
is not enumerable, so nothing at startup knows what the longest one is.
