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

## RegistrationAccessTokenStore Class

Default [IRegistrationAccessTokenStore](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Interfaces\.IRegistrationAccessTokenStore') backed by the distributed
[IEntityStorage](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.Storages.IEntityStorage 'Abblix\.Oidc\.Server\.Features\.Storages\.IEntityStorage'), so the client\-to\-token\-jti binding is shared across all server
replicas\. The entry is stored without expiration — it lives as long as the client is registered
— and is removed when the client is deregistered\.

```csharp
public class RegistrationAccessTokenStore : Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore
```

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

Implements [IRegistrationAccessTokenStore](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Interfaces\.IRegistrationAccessTokenStore')
### Constructors

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

Default [IRegistrationAccessTokenStore](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Interfaces\.IRegistrationAccessTokenStore') backed by the distributed
[IEntityStorage](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.Storages.IEntityStorage 'Abblix\.Oidc\.Server\.Features\.Storages\.IEntityStorage'), so the client\-to\-token\-jti binding is shared across all server
replicas\. The entry is stored without expiration — it lives as long as the client is registered
— and is removed when the client is deregistered\.

```csharp
public RegistrationAccessTokenStore(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.Endpoints.DynamicClientManagement.RegistrationAccessTokenStore.RegistrationAccessTokenStore(Abblix.Oidc.Server.Features.Storages.IEntityStorage,Abblix.Oidc.Server.Features.Storages.IEntityStorageKeyFactory).storage}

The distributed entity storage holding the bindings\.

###### `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.Endpoints.DynamicClientManagement.RegistrationAccessTokenStore.RegistrationAccessTokenStore(Abblix.Oidc.Server.Features.Storages.IEntityStorage,Abblix.Oidc.Server.Features.Storages.IEntityStorageKeyFactory).keyFactory}

The factory that builds the storage key for each client\.
### Methods

## RegistrationAccessTokenStore\.GetTokenIdAsync\(string\) Method {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.RegistrationAccessTokenStore.GetTokenIdAsync(string)}

Retrieves the jti of the client's current registration access token\.

```csharp
public System.Threading.Tasks.Task<string?> GetTokenIdAsync(string clientId);
```
#### Parameters

###### `clientId` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.RegistrationAccessTokenStore.GetTokenIdAsync(string).clientId}

The identifier of the client\.

Implements [GetTokenIdAsync\(string\)](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore.GetTokenIdAsync(string) 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Interfaces\.IRegistrationAccessTokenStore\.GetTokenIdAsync\(string\)')

#### 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\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')  
The stored jti, or `null` when no binding is recorded \(a statically configured client,
or one registered before the binding existed\) — in which case the validator does not enforce
the binding\.

## RegistrationAccessTokenStore\.RemoveAsync\(string\) Method {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.RegistrationAccessTokenStore.RemoveAsync(string)}

Removes the binding for a deregistered client\.

```csharp
public System.Threading.Tasks.Task RemoveAsync(string clientId);
```
#### Parameters

###### `clientId` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.RegistrationAccessTokenStore.RemoveAsync(string).clientId}

The identifier of the client being removed\.

Implements [RemoveAsync\(string\)](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore.RemoveAsync(string) 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Interfaces\.IRegistrationAccessTokenStore\.RemoveAsync\(string\)')

#### Returns
[System\.Threading\.Tasks\.Task](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task 'System\.Threading\.Tasks\.Task')

## RegistrationAccessTokenStore\.SetTokenIdAsync\(string, string\) Method {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.RegistrationAccessTokenStore.SetTokenIdAsync(string,string)}

Records [tokenId](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.RegistrationAccessTokenStore#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.RegistrationAccessTokenStore.SetTokenIdAsync(string,string).tokenId 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.RegistrationAccessTokenStore\.SetTokenIdAsync\(string, string\)\.tokenId') as the jti of the client's current registration access
token, replacing any previously stored value \(which thereby becomes invalid\)\.

```csharp
public System.Threading.Tasks.Task SetTokenIdAsync(string clientId, string tokenId);
```
#### Parameters

###### `clientId` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.RegistrationAccessTokenStore.SetTokenIdAsync(string,string).clientId}

The identifier of the client the token manages\.

###### `tokenId` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.RegistrationAccessTokenStore.SetTokenIdAsync(string,string).tokenId}

The jti embedded in the newly issued registration access token\.

Implements [SetTokenIdAsync\(string, string\)](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore.SetTokenIdAsync(string,string) 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Interfaces\.IRegistrationAccessTokenStore\.SetTokenIdAsync\(string, string\)')

#### Returns
[System\.Threading\.Tasks\.Task](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task 'System\.Threading\.Tasks\.Task')
