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

## BackChannelAuthenticationRequestProcessor Class

Handles the processing of backchannel authentication requests in an OAuth 2\.0/OpenID Connect context\.
This class is responsible for managing the lifecycle of a backchannel authentication request,
from initiating the user's authentication on their device to storing the request for status polling\.
It ensures that the client is authorized, user\-device authentication is initiated, and the request's status
is properly stored and can be queried during the authentication process\.
The class coordinates various services like authentication storage, options configuration and user\-device
interaction, ensuring a seamless backchannel authentication flow\.

```csharp
public class BackChannelAuthenticationRequestProcessor : Abblix.Oidc.Server.Endpoints.BackChannelAuthentication.Interfaces.IBackChannelAuthenticationRequestProcessor
```

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

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

## BackChannelAuthenticationRequestProcessor\(IBackChannelRequestStorage, IOptionsSnapshot\<OidcOptions\>, IUserDeviceAuthenticationHandler, TimeProvider\) Constructor {#Abblix.Oidc.Server.Endpoints.BackChannelAuthentication.BackChannelAuthenticationRequestProcessor.BackChannelAuthenticationRequestProcessor(Abblix.Oidc.Server.Features.BackChannelAuthentication.Interfaces.IBackChannelRequestStorage,Microsoft.Extensions.Options.IOptionsSnapshot_Abblix.Oidc.Server.Common.Configuration.OidcOptions_,Abblix.Oidc.Server.Features.BackChannelAuthentication.Interfaces.IUserDeviceAuthenticationHandler,System.TimeProvider)}

Handles the processing of backchannel authentication requests in an OAuth 2\.0/OpenID Connect context\.
This class is responsible for managing the lifecycle of a backchannel authentication request,
from initiating the user's authentication on their device to storing the request for status polling\.
It ensures that the client is authorized, user\-device authentication is initiated, and the request's status
is properly stored and can be queried during the authentication process\.
The class coordinates various services like authentication storage, options configuration and user\-device
interaction, ensuring a seamless backchannel authentication flow\.

```csharp
public BackChannelAuthenticationRequestProcessor(Abblix.Oidc.Server.Features.BackChannelAuthentication.Interfaces.IBackChannelRequestStorage storage, Microsoft.Extensions.Options.IOptionsSnapshot<Abblix.Oidc.Server.Common.Configuration.OidcOptions> options, Abblix.Oidc.Server.Features.BackChannelAuthentication.Interfaces.IUserDeviceAuthenticationHandler userDeviceAuthenticationHandler, System.TimeProvider timeProvider);
```
#### Parameters

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

Service for storing and retrieving backchannel authentication requests\.

###### `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.BackChannelAuthentication.BackChannelAuthenticationRequestProcessor.BackChannelAuthenticationRequestProcessor(Abblix.Oidc.Server.Features.BackChannelAuthentication.Interfaces.IBackChannelRequestStorage,Microsoft.Extensions.Options.IOptionsSnapshot_Abblix.Oidc.Server.Common.Configuration.OidcOptions_,Abblix.Oidc.Server.Features.BackChannelAuthentication.Interfaces.IUserDeviceAuthenticationHandler,System.TimeProvider).options}

Configuration options related to backchannel authentication\.

###### `userDeviceAuthenticationHandler` [IUserDeviceAuthenticationHandler](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.BackChannelAuthentication.Interfaces.IUserDeviceAuthenticationHandler 'Abblix\.Oidc\.Server\.Features\.BackChannelAuthentication\.Interfaces\.IUserDeviceAuthenticationHandler') {#Abblix.Oidc.Server.Endpoints.BackChannelAuthentication.BackChannelAuthenticationRequestProcessor.BackChannelAuthenticationRequestProcessor(Abblix.Oidc.Server.Features.BackChannelAuthentication.Interfaces.IBackChannelRequestStorage,Microsoft.Extensions.Options.IOptionsSnapshot_Abblix.Oidc.Server.Common.Configuration.OidcOptions_,Abblix.Oidc.Server.Features.BackChannelAuthentication.Interfaces.IUserDeviceAuthenticationHandler,System.TimeProvider).userDeviceAuthenticationHandler}

Handler for initiating authentication on the user's device\.

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

Time provider for managing authentication request expiration\.
### Methods

## BackChannelAuthenticationRequestProcessor\.ProcessAsync\(ValidBackChannelAuthenticationRequest\) Method {#Abblix.Oidc.Server.Endpoints.BackChannelAuthentication.BackChannelAuthenticationRequestProcessor.ProcessAsync(Abblix.Oidc.Server.Endpoints.BackChannelAuthentication.Interfaces.ValidBackChannelAuthenticationRequest)}

Asynchronously processes a validated backchannel authentication request and generates
an appropriate response\. This method handles the business logic required to respond
to a backchannel authentication request, including generating tokens, managing
session state, and any other necessary operations\.

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

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

The validated backchannel authentication request containing the original request data
            and associated client information\.

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

#### 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')[BackChannelAuthenticationSuccess](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Model.BackChannelAuthenticationSuccess 'Abblix\.Oidc\.Server\.Model\.BackChannelAuthenticationSuccess')[,](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 [Abblix\.Utils\.Result&lt;&gt;](https://learn.microsoft.com/en-us/dotnet/api/abblix.utils.result-2 'Abblix\.Utils\.Result\`2') that contains the result of the processing,
            such as an authentication request ID and the expires\_in value\.
