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

## PushedAuthorizationRequestProcessorDecorator Class

Enforces single\-use of a pushed authorization `request_uri` \(RFC 9126 §7\.3\) by decorating the
authorization request processor\. Once processing yields a terminal success — an authorization code or
token has been minted — the `request_uri` is removed from storage so it cannot be replayed within
its remaining time\-to\-live\. Interactive continuations \(login, consent, account selection\) leave it in
place so the user agent can re\-enter the authorization endpoint with the same `request_uri`\.

```csharp
public class PushedAuthorizationRequestProcessorDecorator : Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestProcessor
```

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

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

## PushedAuthorizationRequestProcessorDecorator\(IAuthorizationRequestProcessor, IAuthorizationRequestStorage\) Constructor {#Abblix.Oidc.Server.Features.PushedAuthorization.PushedAuthorizationRequestProcessorDecorator.PushedAuthorizationRequestProcessorDecorator(Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestProcessor,Abblix.Oidc.Server.Features.Storages.IAuthorizationRequestStorage)}

Enforces single\-use of a pushed authorization `request_uri` \(RFC 9126 §7\.3\) by decorating the
authorization request processor\. Once processing yields a terminal success — an authorization code or
token has been minted — the `request_uri` is removed from storage so it cannot be replayed within
its remaining time\-to\-live\. Interactive continuations \(login, consent, account selection\) leave it in
place so the user agent can re\-enter the authorization endpoint with the same `request_uri`\.

```csharp
public PushedAuthorizationRequestProcessorDecorator(Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestProcessor inner, Abblix.Oidc.Server.Features.Storages.IAuthorizationRequestStorage authorizationRequestStorage);
```
#### Parameters

###### `inner` [IAuthorizationRequestProcessor](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestProcessor 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.IAuthorizationRequestProcessor') {#Abblix.Oidc.Server.Features.PushedAuthorization.PushedAuthorizationRequestProcessorDecorator.PushedAuthorizationRequestProcessorDecorator(Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestProcessor,Abblix.Oidc.Server.Features.Storages.IAuthorizationRequestStorage).inner}

The authorization request processor being decorated\.

###### `authorizationRequestStorage` [IAuthorizationRequestStorage](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.Storages.IAuthorizationRequestStorage 'Abblix\.Oidc\.Server\.Features\.Storages\.IAuthorizationRequestStorage') {#Abblix.Oidc.Server.Features.PushedAuthorization.PushedAuthorizationRequestProcessorDecorator.PushedAuthorizationRequestProcessorDecorator(Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestProcessor,Abblix.Oidc.Server.Features.Storages.IAuthorizationRequestStorage).authorizationRequestStorage}

The storage backing pushed authorization requests, from which
            the consumed `request_uri` is removed on a terminal success\.
### Methods

## PushedAuthorizationRequestProcessorDecorator\.ProcessAsync\(ValidAuthorizationRequest\) Method {#Abblix.Oidc.Server.Features.PushedAuthorization.PushedAuthorizationRequestProcessorDecorator.ProcessAsync(Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.ValidAuthorizationRequest)}

Delegates to the wrapped processor and, when the outcome is a successful authentication originating
from a pushed request, consumes the originating `request_uri` to enforce single use\.

```csharp
public System.Threading.Tasks.Task<Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.AuthorizationResponse> ProcessAsync(Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.ValidAuthorizationRequest request);
```
#### Parameters

###### `request` [ValidAuthorizationRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.ValidAuthorizationRequest 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.ValidAuthorizationRequest') {#Abblix.Oidc.Server.Features.PushedAuthorization.PushedAuthorizationRequestProcessorDecorator.ProcessAsync(Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.ValidAuthorizationRequest).request}

The validated authorization request to process\.

Implements [ProcessAsync\(ValidAuthorizationRequest\)](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestProcessor#Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestProcessor.ProcessAsync(Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.ValidAuthorizationRequest) 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.IAuthorizationRequestProcessor\.ProcessAsync\(Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.ValidAuthorizationRequest\)')

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[AuthorizationResponse](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.AuthorizationResponse 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.AuthorizationResponse')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')  
The inner processor's [AuthorizationResponse](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.AuthorizationResponse 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.AuthorizationResponse'), unchanged\.
