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

## DeviceAuthorizationRequestProcessor Class

Processes validated device authorization requests, generating codes and storing the request\.

```csharp
public class DeviceAuthorizationRequestProcessor : Abblix.Oidc.Server.Endpoints.DeviceAuthorization.Interfaces.IDeviceAuthorizationRequestProcessor
```

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

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

## DeviceAuthorizationRequestProcessor\(IDeviceAuthorizationStorage, IDeviceCodeGenerator, IUserCodeGenerator, IOptionsSnapshot\<OidcOptions\>, TimeProvider\) Constructor {#Abblix.Oidc.Server.Endpoints.DeviceAuthorization.DeviceAuthorizationRequestProcessor.DeviceAuthorizationRequestProcessor(Abblix.Oidc.Server.Features.DeviceAuthorization.Interfaces.IDeviceAuthorizationStorage,Abblix.Oidc.Server.Features.DeviceAuthorization.Interfaces.IDeviceCodeGenerator,Abblix.Oidc.Server.Features.DeviceAuthorization.Interfaces.IUserCodeGenerator,Microsoft.Extensions.Options.IOptionsSnapshot_Abblix.Oidc.Server.Common.Configuration.OidcOptions_,System.TimeProvider)}

Processes validated device authorization requests, generating codes and storing the request\.

```csharp
public DeviceAuthorizationRequestProcessor(Abblix.Oidc.Server.Features.DeviceAuthorization.Interfaces.IDeviceAuthorizationStorage storage, Abblix.Oidc.Server.Features.DeviceAuthorization.Interfaces.IDeviceCodeGenerator deviceCodeGenerator, Abblix.Oidc.Server.Features.DeviceAuthorization.Interfaces.IUserCodeGenerator userCodeGenerator, Microsoft.Extensions.Options.IOptionsSnapshot<Abblix.Oidc.Server.Common.Configuration.OidcOptions> options, System.TimeProvider timeProvider);
```
#### Parameters

###### `storage` [IDeviceAuthorizationStorage](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.DeviceAuthorization.Interfaces.IDeviceAuthorizationStorage 'Abblix\.Oidc\.Server\.Features\.DeviceAuthorization\.Interfaces\.IDeviceAuthorizationStorage') {#Abblix.Oidc.Server.Endpoints.DeviceAuthorization.DeviceAuthorizationRequestProcessor.DeviceAuthorizationRequestProcessor(Abblix.Oidc.Server.Features.DeviceAuthorization.Interfaces.IDeviceAuthorizationStorage,Abblix.Oidc.Server.Features.DeviceAuthorization.Interfaces.IDeviceCodeGenerator,Abblix.Oidc.Server.Features.DeviceAuthorization.Interfaces.IUserCodeGenerator,Microsoft.Extensions.Options.IOptionsSnapshot_Abblix.Oidc.Server.Common.Configuration.OidcOptions_,System.TimeProvider).storage}

Storage for persisting device authorization requests\.

###### `deviceCodeGenerator` [IDeviceCodeGenerator](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.DeviceAuthorization.Interfaces.IDeviceCodeGenerator 'Abblix\.Oidc\.Server\.Features\.DeviceAuthorization\.Interfaces\.IDeviceCodeGenerator') {#Abblix.Oidc.Server.Endpoints.DeviceAuthorization.DeviceAuthorizationRequestProcessor.DeviceAuthorizationRequestProcessor(Abblix.Oidc.Server.Features.DeviceAuthorization.Interfaces.IDeviceAuthorizationStorage,Abblix.Oidc.Server.Features.DeviceAuthorization.Interfaces.IDeviceCodeGenerator,Abblix.Oidc.Server.Features.DeviceAuthorization.Interfaces.IUserCodeGenerator,Microsoft.Extensions.Options.IOptionsSnapshot_Abblix.Oidc.Server.Common.Configuration.OidcOptions_,System.TimeProvider).deviceCodeGenerator}

Generator for high\-entropy device codes\.

###### `userCodeGenerator` [IUserCodeGenerator](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.DeviceAuthorization.Interfaces.IUserCodeGenerator 'Abblix\.Oidc\.Server\.Features\.DeviceAuthorization\.Interfaces\.IUserCodeGenerator') {#Abblix.Oidc.Server.Endpoints.DeviceAuthorization.DeviceAuthorizationRequestProcessor.DeviceAuthorizationRequestProcessor(Abblix.Oidc.Server.Features.DeviceAuthorization.Interfaces.IDeviceAuthorizationStorage,Abblix.Oidc.Server.Features.DeviceAuthorization.Interfaces.IDeviceCodeGenerator,Abblix.Oidc.Server.Features.DeviceAuthorization.Interfaces.IUserCodeGenerator,Microsoft.Extensions.Options.IOptionsSnapshot_Abblix.Oidc.Server.Common.Configuration.OidcOptions_,System.TimeProvider).userCodeGenerator}

Generator for user\-friendly verification codes\.

###### `options` [Microsoft\.Extensions\.Options\.IOptionsSnapshot&lt;](https://learn.microsoft.com/en-us/dotnet/api/microsoft.extensions.options.ioptionssnapshot-1 'Microsoft\.Extensions\.Options\.IOptionsSnapshot\`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.ioptionssnapshot-1 'Microsoft\.Extensions\.Options\.IOptionsSnapshot\`1') {#Abblix.Oidc.Server.Endpoints.DeviceAuthorization.DeviceAuthorizationRequestProcessor.DeviceAuthorizationRequestProcessor(Abblix.Oidc.Server.Features.DeviceAuthorization.Interfaces.IDeviceAuthorizationStorage,Abblix.Oidc.Server.Features.DeviceAuthorization.Interfaces.IDeviceCodeGenerator,Abblix.Oidc.Server.Features.DeviceAuthorization.Interfaces.IUserCodeGenerator,Microsoft.Extensions.Options.IOptionsSnapshot_Abblix.Oidc.Server.Common.Configuration.OidcOptions_,System.TimeProvider).options}

Configuration options for device authorization\.

###### `timeProvider` [System\.TimeProvider](https://learn.microsoft.com/en-us/dotnet/api/system.timeprovider 'System\.TimeProvider') {#Abblix.Oidc.Server.Endpoints.DeviceAuthorization.DeviceAuthorizationRequestProcessor.DeviceAuthorizationRequestProcessor(Abblix.Oidc.Server.Features.DeviceAuthorization.Interfaces.IDeviceAuthorizationStorage,Abblix.Oidc.Server.Features.DeviceAuthorization.Interfaces.IDeviceCodeGenerator,Abblix.Oidc.Server.Features.DeviceAuthorization.Interfaces.IUserCodeGenerator,Microsoft.Extensions.Options.IOptionsSnapshot_Abblix.Oidc.Server.Common.Configuration.OidcOptions_,System.TimeProvider).timeProvider}

Provider for current time\.
### Methods

## DeviceAuthorizationRequestProcessor\.ProcessAsync\(ValidDeviceAuthorizationRequest\) Method {#Abblix.Oidc.Server.Endpoints.DeviceAuthorization.DeviceAuthorizationRequestProcessor.ProcessAsync(Abblix.Oidc.Server.Endpoints.DeviceAuthorization.Interfaces.ValidDeviceAuthorizationRequest)}

Processes a validated device authorization request, generating device\_code and user\_code,
and storing the request for later verification\.

```csharp
public System.Threading.Tasks.Task<Abblix.Utils.Result<Abblix.Oidc.Server.Model.DeviceAuthorizationResponse,Abblix.Oidc.Server.Common.OidcError>> ProcessAsync(Abblix.Oidc.Server.Endpoints.DeviceAuthorization.Interfaces.ValidDeviceAuthorizationRequest request);
```
#### Parameters

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

The validated device authorization request\.

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

#### 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')[DeviceAuthorizationResponse](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Model.DeviceAuthorizationResponse 'Abblix\.Oidc\.Server\.Model\.DeviceAuthorizationResponse')[,](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 returns a result containing either a successful device authorization response
or an OIDC error\.
