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

## PollModeGrantProcessor Class

Handles CIBA poll mode token retrieval at the token endpoint\.
In poll mode, clients repeatedly poll until authentication completes\.
The stored request is claimed on retrieval \- read and removed in one protocol \- so that a poll told it
took the request is the only poll that can be told so\. That narrows the window in which two polls both
issue rather than closing it; the method below says what its refusal covers\.

```csharp
public class PollModeGrantProcessor : Abblix.Oidc.Server.Features.BackChannelAuthentication.Interfaces.IBackChannelGrantProcessor
```

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

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

## PollModeGrantProcessor\(IBackChannelRequestStorage\) Constructor {#Abblix.Oidc.Server.Features.BackChannelAuthentication.GrantProcessors.PollModeGrantProcessor.PollModeGrantProcessor(Abblix.Oidc.Server.Features.BackChannelAuthentication.Interfaces.IBackChannelRequestStorage)}

Handles CIBA poll mode token retrieval at the token endpoint\.
In poll mode, clients repeatedly poll until authentication completes\.
The stored request is claimed on retrieval \- read and removed in one protocol \- so that a poll told it
took the request is the only poll that can be told so\. That narrows the window in which two polls both
issue rather than closing it; the method below says what its refusal covers\.

```csharp
public PollModeGrantProcessor(Abblix.Oidc.Server.Features.BackChannelAuthentication.Interfaces.IBackChannelRequestStorage storage);
```
#### Parameters

###### `storage` [IBackChannelRequestStorage](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.BackChannelAuthentication.Interfaces.IBackChannelRequestStorage 'Abblix\.Oidc\.Server\.Features\.BackChannelAuthentication\.Interfaces\.IBackChannelRequestStorage') {#Abblix.Oidc.Server.Features.BackChannelAuthentication.GrantProcessors.PollModeGrantProcessor.PollModeGrantProcessor(Abblix.Oidc.Server.Features.BackChannelAuthentication.Interfaces.IBackChannelRequestStorage).storage}

Storage for backchannel authentication requests\.
### Methods

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

Removes the authentication request from storage through the store's claim protocol and returns its
authorized grant\.
A removal that does not come back with the request is answered `invalid_grant` rather than
re\-issuing tokens\. That is the right answer and not a diagnosis: the request comes back only when
this caller ran the protocol to the end with its own claim still in the store, and every way short
of that is one answer\. A store fault after the removal is not among them at all \- it raises past
this method\.

```csharp
public 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.GrantProcessors.PollModeGrantProcessor.ProcessAuthenticatedRequestAsync(string,Abblix.Oidc.Server.Features.BackChannelAuthentication.BackChannelAuthenticationRequest).authenticationRequestId}

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

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

#### 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://www.abblix.com/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\`2')[AuthorizedGrant](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Token.Interfaces.AuthorizedGrant 'Abblix\.Oidc\.Server\.Endpoints\.Token\.Interfaces\.AuthorizedGrant')[,](https://www.abblix.com/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\`2')[OidcError](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.OidcError 'Abblix\.Oidc\.Server\.Common\.OidcError')[&gt;](https://www.abblix.com/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\`2')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')

## PollModeGrantProcessor\.ValidateTokenEndpointAccess\(\) Method {#Abblix.Oidc.Server.Features.BackChannelAuthentication.GrantProcessors.PollModeGrantProcessor.ValidateTokenEndpointAccess()}

Poll mode clients are expected to poll the token endpoint, so this always returns `null` \(no error\)\.

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

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

#### Returns
[OidcError](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.OidcError 'Abblix\.Oidc\.Server\.Common\.OidcError')
