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

## IAuthenticationCompletionHandler Interface

Handles CIBA authentication completion by routing to the appropriate delivery mode handler
\(poll, ping, or push\) based on the client's configured backchannel\_token\_delivery\_mode\.

```csharp
public interface IAuthenticationCompletionHandler
```

Derived  
↳ [AuthenticationCompletionRouter](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.BackChannelAuthentication.AuthenticationNotifiers.AuthenticationCompletionRouter 'Abblix\.Oidc\.Server\.Features\.BackChannelAuthentication\.AuthenticationNotifiers\.AuthenticationCompletionRouter')
### Properties

## IAuthenticationCompletionHandler\.TokenDeliveryModesSupported Property {#Abblix.Oidc.Server.Features.BackChannelAuthentication.Interfaces.IAuthenticationCompletionHandler.TokenDeliveryModesSupported}

Token delivery modes \(poll, ping, push\) for which a handler is registered with the DI container\.
Used to populate the discovery document's `backchannel_token_delivery_modes_supported` field
so it reflects only modes the host actually supports\.

```csharp
System.Collections.Generic.IEnumerable<string> TokenDeliveryModesSupported { get; }
```

#### Property Value
[System\.Collections\.Generic\.IEnumerable&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerable-1 'System\.Collections\.Generic\.IEnumerable\`1')[System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerable-1 'System\.Collections\.Generic\.IEnumerable\`1')
### Methods

## IAuthenticationCompletionHandler\.CompleteAsync\(string, BackChannelAuthenticationRequest, TimeSpan\) Method {#Abblix.Oidc.Server.Features.BackChannelAuthentication.Interfaces.IAuthenticationCompletionHandler.CompleteAsync(string,Abblix.Oidc.Server.Features.BackChannelAuthentication.BackChannelAuthenticationRequest,System.TimeSpan)}

Completes the authentication process and handles token delivery according to
the client's configured delivery mode\.

```csharp
System.Threading.Tasks.Task CompleteAsync(string authenticationRequestId, Abblix.Oidc.Server.Features.BackChannelAuthentication.BackChannelAuthenticationRequest request, System.TimeSpan expiresIn);
```
#### Parameters

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

The auth\_req\_id identifying the authentication request\.

###### `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.IAuthenticationCompletionHandler.CompleteAsync(string,Abblix.Oidc.Server.Features.BackChannelAuthentication.BackChannelAuthenticationRequest,System.TimeSpan).request}

The authentication request with Authenticated status and authorized grant\.

###### `expiresIn` [System\.TimeSpan](https://learn.microsoft.com/en-us/dotnet/api/system.timespan 'System\.TimeSpan') {#Abblix.Oidc.Server.Features.BackChannelAuthentication.Interfaces.IAuthenticationCompletionHandler.CompleteAsync(string,Abblix.Oidc.Server.Features.BackChannelAuthentication.BackChannelAuthenticationRequest,System.TimeSpan).expiresIn}

How long the authenticated request remains valid for token retrieval\.

#### Returns
[System\.Threading\.Tasks\.Task](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task 'System\.Threading\.Tasks\.Task')  
A task representing the asynchronous completion operation\.

### Remarks
This method automatically:
- Retrieves client information to determine the delivery mode
- Selects the appropriate handler (PollModeCompletionHandler, PingModeCompletionHandler, or PushModeCompletionHandler)
- Delegates to the mode-specific implementation for token delivery
