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

## IRegistrationAccessTokenStore Interface

Records, for each registered client, the identifier \(jti\) of the registration access token
currently authorized to manage it via the RFC 7592 client configuration endpoint\. The token
validator accepts only a token whose jti matches the stored value, so rotating the token on
update \(storing a fresh jti\) invalidates every previously issued token \(RFC 7592 §5\)\.

```csharp
public interface IRegistrationAccessTokenStore
```

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

### Remarks
The binding outlives any single request and must be shared across all server replicas, so the
default implementation persists it in the distributed entity storage rather than in process
memory\. The binding has no expiration — it lives as long as the client is registered — and is
removed when the client is deregistered\.
### Methods

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

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

```csharp
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.Interfaces.IRegistrationAccessTokenStore.GetTokenIdAsync(string).clientId}

The identifier of the client\.

#### 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\.

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

Removes the binding for a deregistered client\.

```csharp
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.Interfaces.IRegistrationAccessTokenStore.RemoveAsync(string).clientId}

The identifier of the client being removed\.

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

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

Records [tokenId](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).tokenId 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Interfaces\.IRegistrationAccessTokenStore\.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
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.Interfaces.IRegistrationAccessTokenStore.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.Interfaces.IRegistrationAccessTokenStore.SetTokenIdAsync(string,string).tokenId}

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

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