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

## RequestUriFetcher Class

Handles fetching of authorization request objects from a specified request URI\.
This class is responsible for retrieving pre\-registered request objects from an external location
indicated by a URI, ensuring the request is complete and valid\.
It enables dynamic request objects, allowing authorization servers to fetch additional
data required for processing the authorization request\.

```csharp
public class RequestUriFetcher : Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.IAuthorizationRequestFetcher
```

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

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

## RequestUriFetcher\(ILogger\<RequestUriFetcher\>, IClientInfoProvider, ISecureHttpFetcher\) Constructor {#Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.RequestUriFetcher.RequestUriFetcher(Microsoft.Extensions.Logging.ILogger_Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.RequestUriFetcher_,Abblix.Oidc.Server.Features.ClientInformation.IClientInfoProvider,Abblix.Oidc.Server.Features.SecureHttpFetch.ISecureHttpFetcher)}

Handles fetching of authorization request objects from a specified request URI\.
This class is responsible for retrieving pre\-registered request objects from an external location
indicated by a URI, ensuring the request is complete and valid\.
It enables dynamic request objects, allowing authorization servers to fetch additional
data required for processing the authorization request\.

```csharp
public RequestUriFetcher(Microsoft.Extensions.Logging.ILogger<Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.RequestUriFetcher> logger, Abblix.Oidc.Server.Features.ClientInformation.IClientInfoProvider clientInfoProvider, Abblix.Oidc.Server.Features.SecureHttpFetch.ISecureHttpFetcher secureHttpFetcher);
```
#### Parameters

###### `logger` [Microsoft\.Extensions\.Logging\.ILogger&lt;](https://learn.microsoft.com/en-us/dotnet/api/microsoft.extensions.logging.ilogger-1 'Microsoft\.Extensions\.Logging\.ILogger\`1')[RequestUriFetcher](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.RequestUriFetcher 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.RequestFetching\.RequestUriFetcher')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/microsoft.extensions.logging.ilogger-1 'Microsoft\.Extensions\.Logging\.ILogger\`1') {#Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.RequestUriFetcher.RequestUriFetcher(Microsoft.Extensions.Logging.ILogger_Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.RequestUriFetcher_,Abblix.Oidc.Server.Features.ClientInformation.IClientInfoProvider,Abblix.Oidc.Server.Features.SecureHttpFetch.ISecureHttpFetcher).logger}

The logger used for logging warnings when request fetching fails\.

###### `clientInfoProvider` [IClientInfoProvider](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.ClientInformation.IClientInfoProvider 'Abblix\.Oidc\.Server\.Features\.ClientInformation\.IClientInfoProvider') {#Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.RequestUriFetcher.RequestUriFetcher(Microsoft.Extensions.Logging.ILogger_Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.RequestUriFetcher_,Abblix.Oidc.Server.Features.ClientInformation.IClientInfoProvider,Abblix.Oidc.Server.Features.SecureHttpFetch.ISecureHttpFetcher).clientInfoProvider}

Service to retrieve client\-specific information for validation\.

###### `secureHttpFetcher` [ISecureHttpFetcher](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.SecureHttpFetch.ISecureHttpFetcher 'Abblix\.Oidc\.Server\.Features\.SecureHttpFetch\.ISecureHttpFetcher') {#Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.RequestUriFetcher.RequestUriFetcher(Microsoft.Extensions.Logging.ILogger_Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.RequestUriFetcher_,Abblix.Oidc.Server.Features.ClientInformation.IClientInfoProvider,Abblix.Oidc.Server.Features.SecureHttpFetch.ISecureHttpFetcher).secureHttpFetcher}

The secure HTTP fetcher for retrieving content from external URIs with SSRF protection\.
### Methods

## RequestUriFetcher\.FetchAsync\(AuthorizationRequest\) Method {#Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.RequestUriFetcher.FetchAsync(Abblix.Oidc.Server.Model.AuthorizationRequest)}

Asynchronously fetches the authorization request object from the given request URI\.
This method retrieves the request object if the request URI is valid and contains an absolute URL\.
It then returns the authorization request object or logs an error if the fetch fails\.

```csharp
public System.Threading.Tasks.Task<Abblix.Utils.Result<Abblix.Oidc.Server.Model.AuthorizationRequest,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.AuthorizationRequestValidationError>> FetchAsync(Abblix.Oidc.Server.Model.AuthorizationRequest request);
```
#### Parameters

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

The authorization request, which contains the RequestUri\.

Implements [FetchAsync\(AuthorizationRequest\)](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.IAuthorizationRequestFetcher#Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.IAuthorizationRequestFetcher.FetchAsync(Abblix.Oidc.Server.Model.AuthorizationRequest) 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.RequestFetching\.IAuthorizationRequestFetcher\.FetchAsync\(Abblix\.Oidc\.Server\.Model\.AuthorizationRequest\)')

#### 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')[AuthorizationRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Model.AuthorizationRequest 'Abblix\.Oidc\.Server\.Model\.AuthorizationRequest')[,](https://learn.microsoft.com/en-us/dotnet/api/abblix.utils.result-2 'Abblix\.Utils\.Result\`2')[AuthorizationRequestValidationError](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.AuthorizationRequestValidationError 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.AuthorizationRequestValidationError')[&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 representing the asynchronous operation, with the result being the fetched request object or an error\.

### Remarks
The method checks for conflicts between the \`Request\` and \`RequestUri\` parameters\.
If both are present, it returns an error since only one should be used\.
Otherwise, it proceeds to fetch the request object from the \`RequestUri\` and returns the result\.
