#### [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')

## RegisterClientRequestProcessor Class

Handles the registration of new clients by generating the necessary credentials and adding client information to
the system\. Ensures the secure and compliant registration of clients as per OAuth 2\.0 and OpenID Connect standards\.

```csharp
public class RegisterClientRequestProcessor : Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegisterClientRequestProcessor
```

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

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

## RegisterClientRequestProcessor\(IClientCredentialFactory, IClientInfoManager, TimeProvider, ITokenIdGenerator, IRegistrationAccessTokenService, IRegistrationAccessTokenStore\) Constructor {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.RegisterClientRequestProcessor.RegisterClientRequestProcessor(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IClientCredentialFactory,Abblix.Oidc.Server.Features.ClientInformation.IClientInfoManager,System.TimeProvider,Abblix.Oidc.Server.Features.RandomGenerators.ITokenIdGenerator,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenService,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore)}

Handles the registration of new clients by generating the necessary credentials and adding client information to
the system\. Ensures the secure and compliant registration of clients as per OAuth 2\.0 and OpenID Connect standards\.

```csharp
public RegisterClientRequestProcessor(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IClientCredentialFactory credentialFactory, Abblix.Oidc.Server.Features.ClientInformation.IClientInfoManager clientInfoManager, System.TimeProvider clock, Abblix.Oidc.Server.Features.RandomGenerators.ITokenIdGenerator tokenIdGenerator, Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenService registrationAccessTokenService, Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore registrationAccessTokenStore);
```
#### Parameters

###### `credentialFactory` [IClientCredentialFactory](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IClientCredentialFactory 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Interfaces\.IClientCredentialFactory') {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.RegisterClientRequestProcessor.RegisterClientRequestProcessor(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IClientCredentialFactory,Abblix.Oidc.Server.Features.ClientInformation.IClientInfoManager,System.TimeProvider,Abblix.Oidc.Server.Features.RandomGenerators.ITokenIdGenerator,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenService,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore).credentialFactory}

###### `clientInfoManager` [IClientInfoManager](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.ClientInformation.IClientInfoManager 'Abblix\.Oidc\.Server\.Features\.ClientInformation\.IClientInfoManager') {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.RegisterClientRequestProcessor.RegisterClientRequestProcessor(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IClientCredentialFactory,Abblix.Oidc.Server.Features.ClientInformation.IClientInfoManager,System.TimeProvider,Abblix.Oidc.Server.Features.RandomGenerators.ITokenIdGenerator,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenService,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore).clientInfoManager}

###### `clock` [System\.TimeProvider](https://learn.microsoft.com/en-us/dotnet/api/system.timeprovider 'System\.TimeProvider') {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.RegisterClientRequestProcessor.RegisterClientRequestProcessor(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IClientCredentialFactory,Abblix.Oidc.Server.Features.ClientInformation.IClientInfoManager,System.TimeProvider,Abblix.Oidc.Server.Features.RandomGenerators.ITokenIdGenerator,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenService,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore).clock}

###### `tokenIdGenerator` [ITokenIdGenerator](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.RandomGenerators.ITokenIdGenerator 'Abblix\.Oidc\.Server\.Features\.RandomGenerators\.ITokenIdGenerator') {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.RegisterClientRequestProcessor.RegisterClientRequestProcessor(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IClientCredentialFactory,Abblix.Oidc.Server.Features.ClientInformation.IClientInfoManager,System.TimeProvider,Abblix.Oidc.Server.Features.RandomGenerators.ITokenIdGenerator,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenService,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore).tokenIdGenerator}

###### `registrationAccessTokenService` [IRegistrationAccessTokenService](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenService 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Interfaces\.IRegistrationAccessTokenService') {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.RegisterClientRequestProcessor.RegisterClientRequestProcessor(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IClientCredentialFactory,Abblix.Oidc.Server.Features.ClientInformation.IClientInfoManager,System.TimeProvider,Abblix.Oidc.Server.Features.RandomGenerators.ITokenIdGenerator,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenService,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore).registrationAccessTokenService}

###### `registrationAccessTokenStore` [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') {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.RegisterClientRequestProcessor.RegisterClientRequestProcessor(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IClientCredentialFactory,Abblix.Oidc.Server.Features.ClientInformation.IClientInfoManager,System.TimeProvider,Abblix.Oidc.Server.Features.RandomGenerators.ITokenIdGenerator,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenService,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore).registrationAccessTokenStore}
### Methods

## RegisterClientRequestProcessor\.ProcessAsync\(ValidClientRegistrationRequest\) Method {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.RegisterClientRequestProcessor.ProcessAsync(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.ValidClientRegistrationRequest)}

Processes a valid client registration request, generating and storing the client's credentials and configuration\.

```csharp
public System.Threading.Tasks.Task<Abblix.Utils.Result<Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.ClientRegistrationSuccessResponse,Abblix.Oidc.Server.Common.OidcError>> ProcessAsync(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.ValidClientRegistrationRequest request);
```
#### Parameters

###### `request` [ValidClientRegistrationRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.ValidClientRegistrationRequest 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Interfaces\.ValidClientRegistrationRequest') {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.RegisterClientRequestProcessor.ProcessAsync(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.ValidClientRegistrationRequest).request}

The client registration request containing the necessary details for registering
            a new client\.

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

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.Utils\.Result&lt;](https://learn.microsoft.com/en-us/dotnet/api/abblix.utils.result-2 'Abblix\.Utils\.Result\`2')[ClientRegistrationSuccessResponse](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.ClientRegistrationSuccessResponse 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Interfaces\.ClientRegistrationSuccessResponse')[,](https://learn.microsoft.com/en-us/dotnet/api/abblix.utils.result-2 'Abblix\.Utils\.Result\`2')[OidcError](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.OidcError 'Abblix\.Oidc\.Server\.Common\.OidcError')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/abblix.utils.result-2 'Abblix\.Utils\.Result\`2')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')  
A task that results in a Result containing the client ID,
            client secret and registration access token, along with other registration details\.

### Remarks
This method orchestrates the client registration process, starting from generating a unique client ID
and secret \(if required\) to issuing a registration access token\. It ensures that all registered clients
are compliant with the system's security standards and the OAuth 2\.0 and OpenID Connect protocols\.
The method also handles the storage of client information, facilitating future authentication and
authorization processes\.
