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

## AuthorizationHandler Class

Handles authorization requests by fetching, validating, processing and encoding the response\.

```csharp
public class AuthorizationHandler : Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationHandler
```

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

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

## AuthorizationHandler\(IAuthorizationRequestFetcher, IAuthorizationRequestValidator, IAuthorizationRequestProcessor, IAuthorizationResponseEncoder\) Constructor {#Abblix.Oidc.Server.Endpoints.Authorization.AuthorizationHandler.AuthorizationHandler(Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.IAuthorizationRequestFetcher,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestValidator,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestProcessor,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationResponseEncoder)}

Handles authorization requests by fetching, validating, processing and encoding the response\.

```csharp
public AuthorizationHandler(Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.IAuthorizationRequestFetcher fetcher, Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestValidator validator, Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestProcessor processor, Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationResponseEncoder responseEncoder);
```
#### Parameters

###### `fetcher` [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') {#Abblix.Oidc.Server.Endpoints.Authorization.AuthorizationHandler.AuthorizationHandler(Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.IAuthorizationRequestFetcher,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestValidator,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestProcessor,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationResponseEncoder).fetcher}

Resolves the effective authorization request, including dereferencing pushed
            \(RFC 9126\) or request\-object \(OIDC Core §6\) variants\.

###### `validator` [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.Authorization.AuthorizationHandler.AuthorizationHandler(Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.IAuthorizationRequestFetcher,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestValidator,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestProcessor,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationResponseEncoder).validator}

Performs protocol\-level validation of the resolved request prior to processing\.

###### `processor` [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.Endpoints.Authorization.AuthorizationHandler.AuthorizationHandler(Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.IAuthorizationRequestFetcher,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestValidator,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestProcessor,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationResponseEncoder).processor}

Produces the validated authorization result projected onto the wire\.

###### `responseEncoder` [IAuthorizationResponseEncoder](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationResponseEncoder 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.IAuthorizationResponseEncoder') {#Abblix.Oidc.Server.Endpoints.Authorization.AuthorizationHandler.AuthorizationHandler(Abblix.Oidc.Server.Endpoints.Authorization.RequestFetching.IAuthorizationRequestFetcher,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestValidator,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationRequestProcessor,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationResponseEncoder).responseEncoder}

Applies iss/scope gating and, for a JARM request, packs the response
            parameters into the response JWT, at the single convergence point for success and every error variant\.
### Methods

## AuthorizationHandler\.HandleAsync\(AuthorizationRequest\) Method {#Abblix.Oidc.Server.Endpoints.Authorization.AuthorizationHandler.HandleAsync(Abblix.Oidc.Server.Model.AuthorizationRequest)}

Asynchronously handles an authorization request by first fetching the request if necessary,
validating the request and then processing it to generate an authorization response\.

```csharp
public System.Threading.Tasks.Task<Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.AuthorizationResponse> HandleAsync(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.AuthorizationHandler.HandleAsync(Abblix.Oidc.Server.Model.AuthorizationRequest).request}

The authorization request to be handled\. This can be a direct request or a reference
             to an external request that needs to be fetched\.

Implements [HandleAsync\(AuthorizationRequest\)](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationHandler#Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationHandler.HandleAsync(Abblix.Oidc.Server.Model.AuthorizationRequest) 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.IAuthorizationHandler\.HandleAsync\(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')[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')  
A task that returns an [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')\.
             This response can be either an authorization success response or an error response based on the fetching,
             validation and processing outcomes\.

#### Exceptions

[UnexpectedTypeException](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.Exceptions.UnexpectedTypeException 'Abblix\.Oidc\.Server\.Common\.Exceptions\.UnexpectedTypeException')  
Thrown if the validation result is of an unexpected type\.

### Remarks
The handling process involves three main steps:
1\. Fetching of the authorization request if specified by a request or request\_uri parameter\.
2\. Validation of the authorization request against predefined criteria to ensure its legitimacy and completeness\.
3\. Processing of the validated request to generate an authorization response, which could involve user
   authentication, consent handling, and token issuance\.

This method ensures that only requests meeting the necessary validation criteria are processed,
maintaining the integrity and security of the authorization flow\.
