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

## RevocationCutoffRegistry Class

Keeps revocation cutoffs in the same entity storage the rest of the server's short\-lived state lives in\.

```csharp
public class RevocationCutoffRegistry : Abblix.Oidc.Server.Features.Storages.IRevocationCutoffRegistry
```

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

Implements [IRevocationCutoffRegistry](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.Storages.IRevocationCutoffRegistry 'Abblix\.Oidc\.Server\.Features\.Storages\.IRevocationCutoffRegistry')
### Constructors

## RevocationCutoffRegistry\(IEntityStorage, IEntityStorageKeyFactory\) Constructor {#Abblix.Oidc.Server.Features.Storages.RevocationCutoffRegistry.RevocationCutoffRegistry(Abblix.Oidc.Server.Features.Storages.IEntityStorage,Abblix.Oidc.Server.Features.Storages.IEntityStorageKeyFactory)}

Keeps revocation cutoffs in the same entity storage the rest of the server's short\-lived state lives in\.

```csharp
public RevocationCutoffRegistry(Abblix.Oidc.Server.Features.Storages.IEntityStorage storage, Abblix.Oidc.Server.Features.Storages.IEntityStorageKeyFactory keyFactory);
```
#### Parameters

###### `storage` [IEntityStorage](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.Storages.IEntityStorage 'Abblix\.Oidc\.Server\.Features\.Storages\.IEntityStorage') {#Abblix.Oidc.Server.Features.Storages.RevocationCutoffRegistry.RevocationCutoffRegistry(Abblix.Oidc.Server.Features.Storages.IEntityStorage,Abblix.Oidc.Server.Features.Storages.IEntityStorageKeyFactory).storage}

Where the cutoff is written and read\.

###### `keyFactory` [IEntityStorageKeyFactory](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.Storages.IEntityStorageKeyFactory 'Abblix\.Oidc\.Server\.Features\.Storages\.IEntityStorageKeyFactory') {#Abblix.Oidc.Server.Features.Storages.RevocationCutoffRegistry.RevocationCutoffRegistry(Abblix.Oidc.Server.Features.Storages.IEntityStorage,Abblix.Oidc.Server.Features.Storages.IEntityStorageKeyFactory).keyFactory}

Names the entry, so a deployment sharing one store across products keeps its
            own namespace\.
### Methods

## RevocationCutoffRegistry\.GetCutoffAsync\(RevocationScope, string, CancellationToken\) Method {#Abblix.Oidc.Server.Features.Storages.RevocationCutoffRegistry.GetCutoffAsync(Abblix.Oidc.Server.Features.Tokens.Revocation.RevocationScope,string,System.Threading.CancellationToken)}

The cutoff recorded for a principal, or `null` when none is\.

```csharp
public System.Threading.Tasks.Task<System.Nullable<System.DateTimeOffset>> GetCutoffAsync(Abblix.Oidc.Server.Features.Tokens.Revocation.RevocationScope scope, string principal, System.Threading.CancellationToken cancellationToken=default(System.Threading.CancellationToken));
```
#### Parameters

###### `scope` [RevocationScope](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.Tokens.Revocation.RevocationScope 'Abblix\.Oidc\.Server\.Features\.Tokens\.Revocation\.RevocationScope') {#Abblix.Oidc.Server.Features.Storages.RevocationCutoffRegistry.GetCutoffAsync(Abblix.Oidc.Server.Features.Tokens.Revocation.RevocationScope,string,System.Threading.CancellationToken).scope}

Whether the principal is an end user or a single session\.

###### `principal` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.Oidc.Server.Features.Storages.RevocationCutoffRegistry.GetCutoffAsync(Abblix.Oidc.Server.Features.Tokens.Revocation.RevocationScope,string,System.Threading.CancellationToken).principal}

The subject identifier or the session identifier\.

###### `cancellationToken` [System\.Threading\.CancellationToken](https://learn.microsoft.com/en-us/dotnet/api/system.threading.cancellationtoken 'System\.Threading\.CancellationToken') {#Abblix.Oidc.Server.Features.Storages.RevocationCutoffRegistry.GetCutoffAsync(Abblix.Oidc.Server.Features.Tokens.Revocation.RevocationScope,string,System.Threading.CancellationToken).cancellationToken}

Cancels the lookup\.

Implements [GetCutoffAsync\(RevocationScope, string, CancellationToken\)](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.Storages.IRevocationCutoffRegistry#Abblix.Oidc.Server.Features.Storages.IRevocationCutoffRegistry.GetCutoffAsync(Abblix.Oidc.Server.Features.Tokens.Revocation.RevocationScope,string,System.Threading.CancellationToken) 'Abblix\.Oidc\.Server\.Features\.Storages\.IRevocationCutoffRegistry\.GetCutoffAsync\(Abblix\.Oidc\.Server\.Features\.Tokens\.Revocation\.RevocationScope, string, System\.Threading\.CancellationToken\)')

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[System\.Nullable&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.nullable-1 'System\.Nullable\`1')[System\.DateTimeOffset](https://learn.microsoft.com/en-us/dotnet/api/system.datetimeoffset 'System\.DateTimeOffset')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.nullable-1 'System\.Nullable\`1')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')  
The moment before which tokens for this principal are revoked\.

## RevocationCutoffRegistry\.SetCutoffAsync\(RevocationScope, string, DateTimeOffset, DateTimeOffset, CancellationToken\) Method {#Abblix.Oidc.Server.Features.Storages.RevocationCutoffRegistry.SetCutoffAsync(Abblix.Oidc.Server.Features.Tokens.Revocation.RevocationScope,string,System.DateTimeOffset,System.DateTimeOffset,System.Threading.CancellationToken)}

Records a cutoff for a principal\.

```csharp
public System.Threading.Tasks.Task SetCutoffAsync(Abblix.Oidc.Server.Features.Tokens.Revocation.RevocationScope scope, string principal, System.DateTimeOffset cutoff, System.DateTimeOffset expiresAt, System.Threading.CancellationToken cancellationToken=default(System.Threading.CancellationToken));
```
#### Parameters

###### `scope` [RevocationScope](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.Tokens.Revocation.RevocationScope 'Abblix\.Oidc\.Server\.Features\.Tokens\.Revocation\.RevocationScope') {#Abblix.Oidc.Server.Features.Storages.RevocationCutoffRegistry.SetCutoffAsync(Abblix.Oidc.Server.Features.Tokens.Revocation.RevocationScope,string,System.DateTimeOffset,System.DateTimeOffset,System.Threading.CancellationToken).scope}

Whether the principal is an end user or a single session\.

###### `principal` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.Oidc.Server.Features.Storages.RevocationCutoffRegistry.SetCutoffAsync(Abblix.Oidc.Server.Features.Tokens.Revocation.RevocationScope,string,System.DateTimeOffset,System.DateTimeOffset,System.Threading.CancellationToken).principal}

The subject identifier or the session identifier\.

###### `cutoff` [System\.DateTimeOffset](https://learn.microsoft.com/en-us/dotnet/api/system.datetimeoffset 'System\.DateTimeOffset') {#Abblix.Oidc.Server.Features.Storages.RevocationCutoffRegistry.SetCutoffAsync(Abblix.Oidc.Server.Features.Tokens.Revocation.RevocationScope,string,System.DateTimeOffset,System.DateTimeOffset,System.Threading.CancellationToken).cutoff}

The moment before which tokens for this principal are revoked\.

###### `expiresAt` [System\.DateTimeOffset](https://learn.microsoft.com/en-us/dotnet/api/system.datetimeoffset 'System\.DateTimeOffset') {#Abblix.Oidc.Server.Features.Storages.RevocationCutoffRegistry.SetCutoffAsync(Abblix.Oidc.Server.Features.Tokens.Revocation.RevocationScope,string,System.DateTimeOffset,System.DateTimeOffset,System.Threading.CancellationToken).expiresAt}

When the record may be dropped, which is when the longest\-lived token it
            could refuse has expired anyway\.

###### `cancellationToken` [System\.Threading\.CancellationToken](https://learn.microsoft.com/en-us/dotnet/api/system.threading.cancellationtoken 'System\.Threading\.CancellationToken') {#Abblix.Oidc.Server.Features.Storages.RevocationCutoffRegistry.SetCutoffAsync(Abblix.Oidc.Server.Features.Tokens.Revocation.RevocationScope,string,System.DateTimeOffset,System.DateTimeOffset,System.Threading.CancellationToken).cancellationToken}

Cancels the write\.

Implements [SetCutoffAsync\(RevocationScope, string, DateTimeOffset, DateTimeOffset, CancellationToken\)](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.Storages.IRevocationCutoffRegistry#Abblix.Oidc.Server.Features.Storages.IRevocationCutoffRegistry.SetCutoffAsync(Abblix.Oidc.Server.Features.Tokens.Revocation.RevocationScope,string,System.DateTimeOffset,System.DateTimeOffset,System.Threading.CancellationToken) 'Abblix\.Oidc\.Server\.Features\.Storages\.IRevocationCutoffRegistry\.SetCutoffAsync\(Abblix\.Oidc\.Server\.Features\.Tokens\.Revocation\.RevocationScope, string, System\.DateTimeOffset, System\.DateTimeOffset, System\.Threading\.CancellationToken\)')

#### Returns
[System\.Threading\.Tasks\.Task](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task 'System\.Threading\.Tasks\.Task')  
A task that completes once the cutoff has been written\.
