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

## PushedAuthorizationRequestValidator Class

Validates pushed authorization requests by enforcing OAuth 2\.0 protocol constraints\.
This validator ensures that requests do not use prohibited parameters and
comply with standard authorization request requirements\.

```csharp
public class PushedAuthorizationRequestValidator : Abblix.Oidc.Server.Endpoints.PushedAuthorization.Interfaces.IPushedAuthorizationRequestValidator
```

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

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

## PushedAuthorizationRequestValidator\(IAuthorizationRequestValidator, IClientAuthenticator, IProofValidator\) Constructor {#Abblix.Oidc.Server.Endpoints.PushedAuthorization.PushedAuthorizationRequestValidator.PushedAuthorizationRequestValidator(Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestValidator,Abblix.Oidc.Server.Features.ClientAuthentication.IClientAuthenticator,Abblix.Oidc.Server.Features.DPoP.IProofValidator)}

Validates pushed authorization requests by enforcing OAuth 2\.0 protocol constraints\.
This validator ensures that requests do not use prohibited parameters and
comply with standard authorization request requirements\.

```csharp
public PushedAuthorizationRequestValidator(Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestValidator authorizationRequestValidator, Abblix.Oidc.Server.Features.ClientAuthentication.IClientAuthenticator clientAuthenticator, Abblix.Oidc.Server.Features.DPoP.IProofValidator proofValidator);
```
#### Parameters

###### `authorizationRequestValidator` [IAuthorizationRequestValidator](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestValidator 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.IAuthorizationRequestValidator') {#Abblix.Oidc.Server.Endpoints.PushedAuthorization.PushedAuthorizationRequestValidator.PushedAuthorizationRequestValidator(Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestValidator,Abblix.Oidc.Server.Features.ClientAuthentication.IClientAuthenticator,Abblix.Oidc.Server.Features.DPoP.IProofValidator).authorizationRequestValidator}

###### `clientAuthenticator` [IClientAuthenticator](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.ClientAuthentication.IClientAuthenticator 'Abblix\.Oidc\.Server\.Features\.ClientAuthentication\.IClientAuthenticator') {#Abblix.Oidc.Server.Endpoints.PushedAuthorization.PushedAuthorizationRequestValidator.PushedAuthorizationRequestValidator(Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestValidator,Abblix.Oidc.Server.Features.ClientAuthentication.IClientAuthenticator,Abblix.Oidc.Server.Features.DPoP.IProofValidator).clientAuthenticator}

###### `proofValidator` [IProofValidator](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.DPoP.IProofValidator 'Abblix\.Oidc\.Server\.Features\.DPoP\.IProofValidator') {#Abblix.Oidc.Server.Endpoints.PushedAuthorization.PushedAuthorizationRequestValidator.PushedAuthorizationRequestValidator(Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestValidator,Abblix.Oidc.Server.Features.ClientAuthentication.IClientAuthenticator,Abblix.Oidc.Server.Features.DPoP.IProofValidator).proofValidator}
### Methods

## PushedAuthorizationRequestValidator\.ValidateAsync\(AuthorizationRequest, ClientRequest\) Method {#Abblix.Oidc.Server.Endpoints.PushedAuthorization.PushedAuthorizationRequestValidator.ValidateAsync(Abblix.Oidc.Server.Model.AuthorizationRequest,Abblix.Oidc.Server.Model.ClientRequest)}

Validates a pushed authorization request according to OAuth 2\.0 and OpenID Connect standards\.
This method ensures that the request does not contain prohibited parameters like 'request\_uri' and
verifies that it adheres to the client's registered parameters\. It effectively prevents misuse
and ensures that the request is legitimately associated with the authenticated client\.

```csharp
public System.Threading.Tasks.Task<Abblix.Utils.Result<Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.ValidAuthorizationRequest,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.AuthorizationRequestValidationError>> ValidateAsync(Abblix.Oidc.Server.Model.AuthorizationRequest authorizationRequest, Abblix.Oidc.Server.Model.ClientRequest clientRequest);
```
#### Parameters

###### `authorizationRequest` [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.PushedAuthorization.PushedAuthorizationRequestValidator.ValidateAsync(Abblix.Oidc.Server.Model.AuthorizationRequest,Abblix.Oidc.Server.Model.ClientRequest).authorizationRequest}

The authorization request to be validated\.

###### `clientRequest` [ClientRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Model.ClientRequest 'Abblix\.Oidc\.Server\.Model\.ClientRequest') {#Abblix.Oidc.Server.Endpoints.PushedAuthorization.PushedAuthorizationRequestValidator.ValidateAsync(Abblix.Oidc.Server.Model.AuthorizationRequest,Abblix.Oidc.Server.Model.ClientRequest).clientRequest}

Carrier of the client's authentication credentials \(basic, JWT
            assertion, mTLS, etc\.\) used to authenticate the client per RFC 9126 §2\. Also carries an
            optional DPoP header used to pre\-bind the request to a proof\-of\-possession key
            \(RFC 9449 §10\)\.

Implements [ValidateAsync\(AuthorizationRequest, ClientRequest\)](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.PushedAuthorization.Interfaces.IPushedAuthorizationRequestValidator#Abblix.Oidc.Server.Endpoints.PushedAuthorization.Interfaces.IPushedAuthorizationRequestValidator.ValidateAsync(Abblix.Oidc.Server.Model.AuthorizationRequest,Abblix.Oidc.Server.Model.ClientRequest) 'Abblix\.Oidc\.Server\.Endpoints\.PushedAuthorization\.Interfaces\.IPushedAuthorizationRequestValidator\.ValidateAsync\(Abblix\.Oidc\.Server\.Model\.AuthorizationRequest, Abblix\.Oidc\.Server\.Model\.ClientRequest\)')

#### 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')[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')[,](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 that resolves to a validation result, indicating whether the request is valid
            and adheres to the expected protocol constraints\.
