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

## AuthorizationValidationContext Class

Encapsulates the context necessary for validating an authorization request, including client details,
response modes, and the OAuth 2\.0 flow type\.

```csharp
public record AuthorizationValidationContext : System.IEquatable<Abblix.Oidc.Server.Endpoints.Authorization.Validation.AuthorizationValidationContext>
```

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

Implements [System\.IEquatable&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.iequatable-1 'System\.IEquatable\`1')[AuthorizationValidationContext](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.Validation.AuthorizationValidationContext 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Validation\.AuthorizationValidationContext')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.iequatable-1 'System\.IEquatable\`1')
### Constructors

## AuthorizationValidationContext\(AuthorizationRequest\) Constructor {#Abblix.Oidc.Server.Endpoints.Authorization.Validation.AuthorizationValidationContext.AuthorizationValidationContext(Abblix.Oidc.Server.Model.AuthorizationRequest)}

Encapsulates the context necessary for validating an authorization request, including client details,
response modes, and the OAuth 2\.0 flow type\.

```csharp
public AuthorizationValidationContext(Abblix.Oidc.Server.Model.AuthorizationRequest Request);
```
#### Parameters

###### `Request` [AuthorizationRequest](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Model.AuthorizationRequest 'Abblix\.Oidc\.Server\.Model\.AuthorizationRequest') {#Abblix.Oidc.Server.Endpoints.Authorization.Validation.AuthorizationValidationContext.AuthorizationValidationContext(Abblix.Oidc.Server.Model.AuthorizationRequest).Request}
### Properties

## AuthorizationValidationContext\.AuthorizationDetails Property {#Abblix.Oidc.Server.Endpoints.Authorization.Validation.AuthorizationValidationContext.AuthorizationDetails}

The RFC 9396 Rich Authorization Requests array after per\-type and per\-client validation by
[IAuthorizationDetailsPolicy](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.RichAuthorizationRequests.IAuthorizationDetailsPolicy 'Abblix\.Oidc\.Server\.Features\.RichAuthorizationRequests\.IAuthorizationDetailsPolicy'), stored as the
raw [System\.Text\.Json\.Nodes\.JsonArray](https://learn.microsoft.com/en-us/dotnet/api/system.text.json.nodes.jsonarray 'System\.Text\.Json\.Nodes\.JsonArray') so byte\-exact content survives forward to the grant\.
`null` when the request did not include `authorization_details`\.

```csharp
public System.Text.Json.Nodes.JsonArray? AuthorizationDetails { get; set; }
```

#### Property Value
[System\.Text\.Json\.Nodes\.JsonArray](https://learn.microsoft.com/en-us/dotnet/api/system.text.json.nodes.jsonarray 'System\.Text\.Json\.Nodes\.JsonArray')

## AuthorizationValidationContext\.ClientInfo Property {#Abblix.Oidc.Server.Endpoints.Authorization.Validation.AuthorizationValidationContext.ClientInfo}

Provides details about the client making the authorization request\. This includes identifying information
such as client ID and any other relevant data that has been registered with the authorization server\.

```csharp
public Abblix.Oidc.Server.Features.ClientInformation.ClientInfo ClientInfo { get; set; }
```

#### Property Value
[ClientInfo](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.ClientInformation.ClientInfo 'Abblix\.Oidc\.Server\.Features\.ClientInformation\.ClientInfo')

#### Exceptions

[System\.InvalidOperationException](https://learn.microsoft.com/en-us/dotnet/api/system.invalidoperationexception 'System\.InvalidOperationException')  
Thrown when trying to access this property before it is set\.

## AuthorizationValidationContext\.FlowType Property {#Abblix.Oidc.Server.Endpoints.Authorization.Validation.AuthorizationValidationContext.FlowType}

Identifies the OAuth 2\.0 flow used in the authorization request, such as Authorization Code or Implicit\.

```csharp
public Abblix.Oidc.Server.Common.Constants.FlowTypes FlowType { get; set; }
```

#### Property Value
[FlowTypes](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.Constants.FlowTypes 'Abblix\.Oidc\.Server\.Common\.Constants\.FlowTypes')

#### Exceptions

[System\.InvalidOperationException](https://learn.microsoft.com/en-us/dotnet/api/system.invalidoperationexception 'System\.InvalidOperationException')  
Thrown when trying to access this property before it is set\.

## AuthorizationValidationContext\.IdTokenHintSubject Property {#Abblix.Oidc.Server.Endpoints.Authorization.Validation.AuthorizationValidationContext.IdTokenHintSubject}

The end user the request's `id_token_hint` names, as that ID token spells it, or `null`
when the request carried no hint\.

```csharp
public string? IdTokenHintSubject { get; set; }
```

#### Property Value
[System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String')

### Remarks
Spelled as the ID token has it, which for a pairwise client is the pseudonym sealed to that client's
sector rather than the subject a session carries\. Whoever compares the two converts the session
forward; opening the pseudonym would fail whenever it could not be opened, and a comparison that
could not be made must not read as a match\.

## AuthorizationValidationContext\.Request Property {#Abblix.Oidc.Server.Endpoints.Authorization.Validation.AuthorizationValidationContext.Request}

The authorization request to be validated\. This includes all the details provided by the client
for the authorization process\.

```csharp
public Abblix.Oidc.Server.Model.AuthorizationRequest Request { get; set; }
```

#### Property Value
[AuthorizationRequest](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Model.AuthorizationRequest 'Abblix\.Oidc\.Server\.Model\.AuthorizationRequest')

## AuthorizationValidationContext\.RequestedSubjects Property {#Abblix.Oidc.Server.Endpoints.Authorization.Validation.AuthorizationValidationContext.RequestedSubjects}

The end users the request's `claims` parameter will accept for `sub`, or `null` when it
asked for none in particular\. An empty array accepts nobody\.

```csharp
public string[]? RequestedSubjects { get; set; }
```

#### Property Value
[System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String')[\[\]](https://learn.microsoft.com/en-us/dotnet/api/system.array 'System\.Array')

### Remarks
A second, independent constraint rather than an alternative spelling of
[IdTokenHintSubject](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.Validation.AuthorizationValidationContext#Abblix.Oidc.Server.Endpoints.Authorization.Validation.AuthorizationValidationContext.IdTokenHintSubject 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Validation\.AuthorizationValidationContext\.IdTokenHintSubject'): a request may carry both, and OpenID Connect Core 1\.0 Section 3\.1\.2\.2
obliges the server to honour whichever are present\. Spelled the way the client wrote them, so the same
conversion applies \- a pairwise client names the pseudonym sealed to its own sector\.

Empty is a state a request can genuinely reach, by naming a `value` absent from its own
`values`. That mismatch is what Section 5.5.1 says "MUST cause the authentication to fail", so it
is carried through as a constraint nobody satisfies rather than discarded as nonsense.

## AuthorizationValidationContext\.Resources Property {#Abblix.Oidc.Server.Endpoints.Authorization.Validation.AuthorizationValidationContext.Resources}

A collection of resource definitions that may be requested as part of the authorization process,
providing additional control over the accessible resources\.

```csharp
public Abblix.Oidc.Server.Common.Constants.ResourceDefinition[] Resources { get; set; }
```

#### Property Value
[ResourceDefinition](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.Constants.ResourceDefinition 'Abblix\.Oidc\.Server\.Common\.Constants\.ResourceDefinition')[\[\]](https://learn.microsoft.com/en-us/dotnet/api/system.array 'System\.Array')

## AuthorizationValidationContext\.ResponseMode Property {#Abblix.Oidc.Server.Endpoints.Authorization.Validation.AuthorizationValidationContext.ResponseMode}

Specifies how the authorization response should be delivered to the client, e\.g\., via a direct query or fragment\.

```csharp
public string ResponseMode { get; set; }
```

#### Property Value
[System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String')

## AuthorizationValidationContext\.Scope Property {#Abblix.Oidc.Server.Endpoints.Authorization.Validation.AuthorizationValidationContext.Scope}

A collection of scope definitions applicable to the authorization request, determining the permissions granted\.

```csharp
public Abblix.Oidc.Server.Common.Constants.ScopeDefinition[] Scope { get; set; }
```

#### Property Value
[ScopeDefinition](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.Constants.ScopeDefinition 'Abblix\.Oidc\.Server\.Common\.Constants\.ScopeDefinition')[\[\]](https://learn.microsoft.com/en-us/dotnet/api/system.array 'System\.Array')

## AuthorizationValidationContext\.ValidRedirectUri Property {#Abblix.Oidc.Server.Endpoints.Authorization.Validation.AuthorizationValidationContext.ValidRedirectUri}

The redirect URI where the response to the authorization request should be sent\. This URI must be one of the
registered URIs for the client to ensure security\.

```csharp
public System.Uri? ValidRedirectUri { get; set; }
```

#### Property Value
[System\.Uri](https://learn.microsoft.com/en-us/dotnet/api/system.uri 'System\.Uri')
