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

## DeviceAuthorizationHandler Class

Handles device authorization requests as defined in RFC 8628\.
Coordinates validation and processing of requests to generate device\_code and user\_code\.

```csharp
public class DeviceAuthorizationHandler : Abblix.Oidc.Server.Endpoints.DeviceAuthorization.Interfaces.IDeviceAuthorizationHandler
```

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

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

## DeviceAuthorizationHandler\(IDeviceAuthorizationRequestValidator, IDeviceAuthorizationRequestProcessor\) Constructor {#Abblix.Oidc.Server.Endpoints.DeviceAuthorization.DeviceAuthorizationHandler.DeviceAuthorizationHandler(Abblix.Oidc.Server.Endpoints.DeviceAuthorization.Interfaces.IDeviceAuthorizationRequestValidator,Abblix.Oidc.Server.Endpoints.DeviceAuthorization.Interfaces.IDeviceAuthorizationRequestProcessor)}

Handles device authorization requests as defined in RFC 8628\.
Coordinates validation and processing of requests to generate device\_code and user\_code\.

```csharp
public DeviceAuthorizationHandler(Abblix.Oidc.Server.Endpoints.DeviceAuthorization.Interfaces.IDeviceAuthorizationRequestValidator validator, Abblix.Oidc.Server.Endpoints.DeviceAuthorization.Interfaces.IDeviceAuthorizationRequestProcessor processor);
```
#### Parameters

###### `validator` [IDeviceAuthorizationRequestValidator](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DeviceAuthorization.Interfaces.IDeviceAuthorizationRequestValidator 'Abblix\.Oidc\.Server\.Endpoints\.DeviceAuthorization\.Interfaces\.IDeviceAuthorizationRequestValidator') {#Abblix.Oidc.Server.Endpoints.DeviceAuthorization.DeviceAuthorizationHandler.DeviceAuthorizationHandler(Abblix.Oidc.Server.Endpoints.DeviceAuthorization.Interfaces.IDeviceAuthorizationRequestValidator,Abblix.Oidc.Server.Endpoints.DeviceAuthorization.Interfaces.IDeviceAuthorizationRequestProcessor).validator}

The service responsible for validating device authorization requests\.

###### `processor` [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') {#Abblix.Oidc.Server.Endpoints.DeviceAuthorization.DeviceAuthorizationHandler.DeviceAuthorizationHandler(Abblix.Oidc.Server.Endpoints.DeviceAuthorization.Interfaces.IDeviceAuthorizationRequestValidator,Abblix.Oidc.Server.Endpoints.DeviceAuthorization.Interfaces.IDeviceAuthorizationRequestProcessor).processor}

The service responsible for processing validated requests\.
### Methods

## DeviceAuthorizationHandler\.HandleAsync\(DeviceAuthorizationRequest, ClientRequest\) Method {#Abblix.Oidc.Server.Endpoints.DeviceAuthorization.DeviceAuthorizationHandler.HandleAsync(Abblix.Oidc.Server.Model.DeviceAuthorizationRequest,Abblix.Oidc.Server.Model.ClientRequest)}

Handles a device authorization request, validating and processing it to generate
device\_code and user\_code for the client\.

```csharp
public System.Threading.Tasks.Task<Abblix.Utils.Result<Abblix.Oidc.Server.Model.DeviceAuthorizationResponse,Abblix.Oidc.Server.Common.OidcError>> HandleAsync(Abblix.Oidc.Server.Model.DeviceAuthorizationRequest request, Abblix.Oidc.Server.Model.ClientRequest clientRequest);
```
#### Parameters

###### `request` [DeviceAuthorizationRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Model.DeviceAuthorizationRequest 'Abblix\.Oidc\.Server\.Model\.DeviceAuthorizationRequest') {#Abblix.Oidc.Server.Endpoints.DeviceAuthorization.DeviceAuthorizationHandler.HandleAsync(Abblix.Oidc.Server.Model.DeviceAuthorizationRequest,Abblix.Oidc.Server.Model.ClientRequest).request}

The device authorization request from the client\.

###### `clientRequest` [ClientRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Model.ClientRequest 'Abblix\.Oidc\.Server\.Model\.ClientRequest') {#Abblix.Oidc.Server.Endpoints.DeviceAuthorization.DeviceAuthorizationHandler.HandleAsync(Abblix.Oidc.Server.Model.DeviceAuthorizationRequest,Abblix.Oidc.Server.Model.ClientRequest).clientRequest}

The client authentication information\.

Implements [HandleAsync\(DeviceAuthorizationRequest, ClientRequest\)](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DeviceAuthorization.Interfaces.IDeviceAuthorizationHandler#Abblix.Oidc.Server.Endpoints.DeviceAuthorization.Interfaces.IDeviceAuthorizationHandler.HandleAsync(Abblix.Oidc.Server.Model.DeviceAuthorizationRequest,Abblix.Oidc.Server.Model.ClientRequest) 'Abblix\.Oidc\.Server\.Endpoints\.DeviceAuthorization\.Interfaces\.IDeviceAuthorizationHandler\.HandleAsync\(Abblix\.Oidc\.Server\.Model\.DeviceAuthorizationRequest, Abblix\.Oidc\.Server\.Model\.ClientRequest\)')

#### 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
with device\_code and user\_code, or an OIDC error\.
