#### [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')

## AuthorizationRequestProcessor Class

Processes authorization requests by coordinating with various services like authentication,
consent, and token issuance\. This class handles the logic of determining the appropriate
response to an authorization request based on the request's parameters and the current state
of the user's session\.

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

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

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

## AuthorizationRequestProcessor\(IAuthSessionService, IUserConsentsProvider, TimeProvider, IEnumerable\<IAuthorizationResponseBuilder\>, IConsentConstraintEnforcer\) Constructor {#Abblix.Oidc.Server.Endpoints.Authorization.AuthorizationRequestProcessor.AuthorizationRequestProcessor(Abblix.Oidc.Server.Features.UserAuthentication.IAuthSessionService,Abblix.Oidc.Server.Features.Consents.IUserConsentsProvider,System.TimeProvider,System.Collections.Generic.IEnumerable_Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationResponseBuilder_,Abblix.Oidc.Server.Endpoints.Authorization.IConsentConstraintEnforcer)}

Processes authorization requests by coordinating with various services like authentication,
consent, and token issuance\. This class handles the logic of determining the appropriate
response to an authorization request based on the request's parameters and the current state
of the user's session\.

```csharp
public AuthorizationRequestProcessor(Abblix.Oidc.Server.Features.UserAuthentication.IAuthSessionService authSessionService, Abblix.Oidc.Server.Features.Consents.IUserConsentsProvider consentsProvider, System.TimeProvider clock, System.Collections.Generic.IEnumerable<Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationResponseBuilder> responseProcessors, Abblix.Oidc.Server.Endpoints.Authorization.IConsentConstraintEnforcer consentConstraintEnforcer);
```
#### Parameters

###### `authSessionService` [IAuthSessionService](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.UserAuthentication.IAuthSessionService 'Abblix\.Oidc\.Server\.Features\.UserAuthentication\.IAuthSessionService') {#Abblix.Oidc.Server.Endpoints.Authorization.AuthorizationRequestProcessor.AuthorizationRequestProcessor(Abblix.Oidc.Server.Features.UserAuthentication.IAuthSessionService,Abblix.Oidc.Server.Features.Consents.IUserConsentsProvider,System.TimeProvider,System.Collections.Generic.IEnumerable_Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationResponseBuilder_,Abblix.Oidc.Server.Endpoints.Authorization.IConsentConstraintEnforcer).authSessionService}

###### `consentsProvider` [IUserConsentsProvider](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.Consents.IUserConsentsProvider 'Abblix\.Oidc\.Server\.Features\.Consents\.IUserConsentsProvider') {#Abblix.Oidc.Server.Endpoints.Authorization.AuthorizationRequestProcessor.AuthorizationRequestProcessor(Abblix.Oidc.Server.Features.UserAuthentication.IAuthSessionService,Abblix.Oidc.Server.Features.Consents.IUserConsentsProvider,System.TimeProvider,System.Collections.Generic.IEnumerable_Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationResponseBuilder_,Abblix.Oidc.Server.Endpoints.Authorization.IConsentConstraintEnforcer).consentsProvider}

###### `clock` [System\.TimeProvider](https://learn.microsoft.com/en-us/dotnet/api/system.timeprovider 'System\.TimeProvider') {#Abblix.Oidc.Server.Endpoints.Authorization.AuthorizationRequestProcessor.AuthorizationRequestProcessor(Abblix.Oidc.Server.Features.UserAuthentication.IAuthSessionService,Abblix.Oidc.Server.Features.Consents.IUserConsentsProvider,System.TimeProvider,System.Collections.Generic.IEnumerable_Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationResponseBuilder_,Abblix.Oidc.Server.Endpoints.Authorization.IConsentConstraintEnforcer).clock}

###### `responseProcessors` [System\.Collections\.Generic\.IEnumerable&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerable-1 'System\.Collections\.Generic\.IEnumerable\`1')[IAuthorizationResponseBuilder](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationResponseBuilder 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.IAuthorizationResponseBuilder')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerable-1 'System\.Collections\.Generic\.IEnumerable\`1') {#Abblix.Oidc.Server.Endpoints.Authorization.AuthorizationRequestProcessor.AuthorizationRequestProcessor(Abblix.Oidc.Server.Features.UserAuthentication.IAuthSessionService,Abblix.Oidc.Server.Features.Consents.IUserConsentsProvider,System.TimeProvider,System.Collections.Generic.IEnumerable_Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationResponseBuilder_,Abblix.Oidc.Server.Endpoints.Authorization.IConsentConstraintEnforcer).responseProcessors}

###### `consentConstraintEnforcer` [IConsentConstraintEnforcer](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.IConsentConstraintEnforcer 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.IConsentConstraintEnforcer') {#Abblix.Oidc.Server.Endpoints.Authorization.AuthorizationRequestProcessor.AuthorizationRequestProcessor(Abblix.Oidc.Server.Features.UserAuthentication.IAuthSessionService,Abblix.Oidc.Server.Features.Consents.IUserConsentsProvider,System.TimeProvider,System.Collections.Generic.IEnumerable_Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationResponseBuilder_,Abblix.Oidc.Server.Endpoints.Authorization.IConsentConstraintEnforcer).consentConstraintEnforcer}
### Methods

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

Orchestrates the flow for handling a valid authorization request, considering the user's session state,
the need for user consent, and generating appropriate tokens\. This method serves as the central logic for
determining how the system should respond based on the client's request and the user's current state\.

```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.Endpoints.Authorization.AuthorizationRequestProcessor.ProcessAsync(Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.ValidAuthorizationRequest).request}

A validated authorization request containing parameters required for processing\.

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')  
An authorization response object, which can either represent a successful authentication, an error,
or a signal that further user interaction is required \(e\.g\., login, consent\)\.
