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

## CompositeRequestFetcher Class

Chains multiple [IBackChannelAuthenticationRequestFetcher](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.BackChannelAuthentication.RequestFetching.IBackChannelAuthenticationRequestFetcher 'Abblix\.Oidc\.Server\.Endpoints\.BackChannelAuthentication\.RequestFetching\.IBackChannelAuthenticationRequestFetcher') instances, feeding each one's
output into the next so that distinct sources or formats \(for example, the signed Request Object\) can
progressively enrich the request\. Returns the first failure without invoking the remaining fetchers\.

```csharp
public class CompositeRequestFetcher : Abblix.Oidc.Server.Endpoints.BackChannelAuthentication.RequestFetching.IBackChannelAuthenticationRequestFetcher
```

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

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

## CompositeRequestFetcher\(IBackChannelAuthenticationRequestFetcher\[\]\) Constructor {#Abblix.Oidc.Server.Endpoints.BackChannelAuthentication.RequestFetching.CompositeRequestFetcher.CompositeRequestFetcher(Abblix.Oidc.Server.Endpoints.BackChannelAuthentication.RequestFetching.IBackChannelAuthenticationRequestFetcher[])}

Chains multiple [IBackChannelAuthenticationRequestFetcher](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.BackChannelAuthentication.RequestFetching.IBackChannelAuthenticationRequestFetcher 'Abblix\.Oidc\.Server\.Endpoints\.BackChannelAuthentication\.RequestFetching\.IBackChannelAuthenticationRequestFetcher') instances, feeding each one's
output into the next so that distinct sources or formats \(for example, the signed Request Object\) can
progressively enrich the request\. Returns the first failure without invoking the remaining fetchers\.

```csharp
public CompositeRequestFetcher(Abblix.Oidc.Server.Endpoints.BackChannelAuthentication.RequestFetching.IBackChannelAuthenticationRequestFetcher[] fetchers);
```
#### Parameters

###### `fetchers` [IBackChannelAuthenticationRequestFetcher](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.BackChannelAuthentication.RequestFetching.IBackChannelAuthenticationRequestFetcher 'Abblix\.Oidc\.Server\.Endpoints\.BackChannelAuthentication\.RequestFetching\.IBackChannelAuthenticationRequestFetcher')[\[\]](https://learn.microsoft.com/en-us/dotnet/api/system.array 'System\.Array') {#Abblix.Oidc.Server.Endpoints.BackChannelAuthentication.RequestFetching.CompositeRequestFetcher.CompositeRequestFetcher(Abblix.Oidc.Server.Endpoints.BackChannelAuthentication.RequestFetching.IBackChannelAuthenticationRequestFetcher[]).fetchers}
### Methods

## CompositeRequestFetcher\.FetchAsync\(BackChannelAuthenticationRequest\) Method {#Abblix.Oidc.Server.Endpoints.BackChannelAuthentication.RequestFetching.CompositeRequestFetcher.FetchAsync(Abblix.Oidc.Server.Model.BackChannelAuthenticationRequest)}

Iterates through the configured fetchers to process the backchannel authentication request\.
Each fetcher in the array has the opportunity to handle the request\. If a fetcher returns a fault,
the process stops and the fault is returned\.
If all fetchers succeed, the method returns the final successful result\.

```csharp
public System.Threading.Tasks.Task<Abblix.Utils.Result<Abblix.Oidc.Server.Model.BackChannelAuthenticationRequest,Abblix.Oidc.Server.Common.OidcError>> FetchAsync(Abblix.Oidc.Server.Model.BackChannelAuthenticationRequest request);
```
#### Parameters

###### `request` [BackChannelAuthenticationRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Model.BackChannelAuthenticationRequest 'Abblix\.Oidc\.Server\.Model\.BackChannelAuthenticationRequest') {#Abblix.Oidc.Server.Endpoints.BackChannelAuthentication.RequestFetching.CompositeRequestFetcher.FetchAsync(Abblix.Oidc.Server.Model.BackChannelAuthenticationRequest).request}

The backchannel authentication request to be processed\.

Implements [FetchAsync\(BackChannelAuthenticationRequest\)](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.BackChannelAuthentication.RequestFetching.IBackChannelAuthenticationRequestFetcher#Abblix.Oidc.Server.Endpoints.BackChannelAuthentication.RequestFetching.IBackChannelAuthenticationRequestFetcher.FetchAsync(Abblix.Oidc.Server.Model.BackChannelAuthenticationRequest) 'Abblix\.Oidc\.Server\.Endpoints\.BackChannelAuthentication\.RequestFetching\.IBackChannelAuthenticationRequestFetcher\.FetchAsync\(Abblix\.Oidc\.Server\.Model\.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://learn.microsoft.com/en-us/dotnet/api/abblix.utils.result-2 'Abblix\.Utils\.Result\`2')[BackChannelAuthenticationRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Model.BackChannelAuthenticationRequest 'Abblix\.Oidc\.Server\.Model\.BackChannelAuthenticationRequest')[,](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 [Abblix\.Utils\.Result&lt;&gt;](https://learn.microsoft.com/en-us/dotnet/api/abblix.utils.result-2 'Abblix\.Utils\.Result\`2') that represents the outcome of the fetching process\.
