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

## IBackChannelGrantProcessor Interface

Defines mode\-specific processing logic for handling authenticated CIBA requests at the token endpoint\.
Different delivery modes \(poll, ping, push\) have different requirements for token retrieval\.

```csharp
public interface IBackChannelGrantProcessor
```

Derived  
↳ [PingModeGrantProcessor](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.BackChannelAuthentication.GrantProcessors.PingModeGrantProcessor 'Abblix\.Oidc\.Server\.Features\.BackChannelAuthentication\.GrantProcessors\.PingModeGrantProcessor')  
↳ [PollModeGrantProcessor](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.BackChannelAuthentication.GrantProcessors.PollModeGrantProcessor 'Abblix\.Oidc\.Server\.Features\.BackChannelAuthentication\.GrantProcessors\.PollModeGrantProcessor')  
↳ [PushModeGrantProcessor](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.BackChannelAuthentication.GrantProcessors.PushModeGrantProcessor 'Abblix\.Oidc\.Server\.Features\.BackChannelAuthentication\.GrantProcessors\.PushModeGrantProcessor')
### Methods

## IBackChannelGrantProcessor\.ProcessAuthenticatedRequestAsync\(string, BackChannelAuthenticationRequest\) Method {#Abblix.Oidc.Server.Features.BackChannelAuthentication.Interfaces.IBackChannelGrantProcessor.ProcessAuthenticatedRequestAsync(string,Abblix.Oidc.Server.Features.BackChannelAuthentication.BackChannelAuthenticationRequest)}

Validates whether the client is allowed to retrieve tokens via the token endpoint for this delivery mode,
and performs any mode\-specific post\-retrieval actions \(e\.g\., removing from storage\)\.

```csharp
System.Threading.Tasks.Task<Abblix.Utils.Result<Abblix.Oidc.Server.Endpoints.Token.Interfaces.AuthorizedGrant,Abblix.Oidc.Server.Common.OidcError>> ProcessAuthenticatedRequestAsync(string authenticationRequestId, Abblix.Oidc.Server.Features.BackChannelAuthentication.BackChannelAuthenticationRequest request);
```
#### Parameters

###### `authenticationRequestId` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.Oidc.Server.Features.BackChannelAuthentication.Interfaces.IBackChannelGrantProcessor.ProcessAuthenticatedRequestAsync(string,Abblix.Oidc.Server.Features.BackChannelAuthentication.BackChannelAuthenticationRequest).authenticationRequestId}

The authentication request identifier\.

###### `request` [BackChannelAuthenticationRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.BackChannelAuthentication.BackChannelAuthenticationRequest 'Abblix\.Oidc\.Server\.Features\.BackChannelAuthentication\.BackChannelAuthenticationRequest') {#Abblix.Oidc.Server.Features.BackChannelAuthentication.Interfaces.IBackChannelGrantProcessor.ProcessAuthenticatedRequestAsync(string,Abblix.Oidc.Server.Features.BackChannelAuthentication.BackChannelAuthenticationRequest).request}

The authenticated CIBA request from storage\.

#### 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')[AuthorizedGrant](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Token.Interfaces.AuthorizedGrant 'Abblix\.Oidc\.Server\.Endpoints\.Token\.Interfaces\.AuthorizedGrant')[,](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')  
Either the authorized grant if retrieval is allowed and successful, or an error indicating
why token retrieval is not permitted for this mode\.

## IBackChannelGrantProcessor\.ValidateTokenEndpointAccess\(\) Method {#Abblix.Oidc.Server.Features.BackChannelAuthentication.Interfaces.IBackChannelGrantProcessor.ValidateTokenEndpointAccess()}

Validates that a token request is allowed for this delivery mode\.
For example, push mode clients should never poll the token endpoint\.

```csharp
Abblix.Oidc.Server.Common.OidcError? ValidateTokenEndpointAccess();
```

#### Returns
[OidcError](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.OidcError 'Abblix\.Oidc\.Server\.Common\.OidcError')  
Null if the request is valid for this mode, or an error if the client
is attempting an operation not allowed by their delivery mode\.
