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

## AuthorizationContextExtensions Class

Provides extension methods for working with [AuthorizationContext](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.AuthorizationContext 'Abblix\.Oidc\.Server\.Common\.AuthorizationContext') objects,
facilitating the conversion between authorization contexts and JWT claims\.

```csharp
public static class AuthorizationContextExtensions
```

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

## AuthorizationContextExtensions\.ApplyTo\(this AuthorizationContext, JsonWebTokenPayload\) Method {#Abblix.Oidc.Server.Common.AuthorizationContextExtensions.ApplyTo(thisAbblix.Oidc.Server.Common.AuthorizationContext,Abblix.Jwt.JsonWebTokenPayload)}

Applies the information from an [AuthorizationContext](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.AuthorizationContext 'Abblix\.Oidc\.Server\.Common\.AuthorizationContext') to a [JsonWebTokenPayload](https://www.abblix.com/docs/api/abblix-jwt/Abblix.Jwt.JsonWebTokenPayload 'Abblix\.Jwt\.JsonWebTokenPayload'),
converting the context into JWT claims\.

```csharp
public static void ApplyTo(this Abblix.Oidc.Server.Common.AuthorizationContext context, Abblix.Jwt.JsonWebTokenPayload payload);
```
#### Parameters

###### `context` [AuthorizationContext](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.AuthorizationContext 'Abblix\.Oidc\.Server\.Common\.AuthorizationContext') {#Abblix.Oidc.Server.Common.AuthorizationContextExtensions.ApplyTo(thisAbblix.Oidc.Server.Common.AuthorizationContext,Abblix.Jwt.JsonWebTokenPayload).context}

The [AuthorizationContext](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.AuthorizationContext 'Abblix\.Oidc\.Server\.Common\.AuthorizationContext') containing authorization details\.

###### `payload` [JsonWebTokenPayload](https://www.abblix.com/docs/api/abblix-jwt/Abblix.Jwt.JsonWebTokenPayload 'Abblix\.Jwt\.JsonWebTokenPayload') {#Abblix.Oidc.Server.Common.AuthorizationContextExtensions.ApplyTo(thisAbblix.Oidc.Server.Common.AuthorizationContext,Abblix.Jwt.JsonWebTokenPayload).payload}

The JWT payload where the authorization context information will be applied as claims\.

### Remarks
This method is useful for embedding authorization details directly into a JWT, allowing for efficient transfer
and validation of authorization information\.

## AuthorizationContextExtensions\.ToAuthorizationContext\(this JsonWebTokenPayload\) Method {#Abblix.Oidc.Server.Common.AuthorizationContextExtensions.ToAuthorizationContext(thisAbblix.Jwt.JsonWebTokenPayload)}

Creates an [AuthorizationContext](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.AuthorizationContext 'Abblix\.Oidc\.Server\.Common\.AuthorizationContext') from a [JsonWebTokenPayload](https://www.abblix.com/docs/api/abblix-jwt/Abblix.Jwt.JsonWebTokenPayload 'Abblix\.Jwt\.JsonWebTokenPayload'),
converting JWT claims back into an authorization context\.

```csharp
public static Abblix.Oidc.Server.Common.AuthorizationContext ToAuthorizationContext(this Abblix.Jwt.JsonWebTokenPayload payload);
```
#### Parameters

###### `payload` [JsonWebTokenPayload](https://www.abblix.com/docs/api/abblix-jwt/Abblix.Jwt.JsonWebTokenPayload 'Abblix\.Jwt\.JsonWebTokenPayload') {#Abblix.Oidc.Server.Common.AuthorizationContextExtensions.ToAuthorizationContext(thisAbblix.Jwt.JsonWebTokenPayload).payload}

The JWT payload containing claims that represent an authorization context\.

#### Returns
[AuthorizationContext](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.AuthorizationContext 'Abblix\.Oidc\.Server\.Common\.AuthorizationContext')  
An instance of [AuthorizationContext](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.AuthorizationContext 'Abblix\.Oidc\.Server\.Common\.AuthorizationContext') populated with information derived from
            the JWT claims\.

### Remarks
This method facilitates the extraction of authorization details from JWT claims,
reconstructing an [AuthorizationContext](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.AuthorizationContext 'Abblix\.Oidc\.Server\.Common\.AuthorizationContext') for further processing or validation\.

## AuthorizationContextExtensions\.WithDefaultResource\(this AuthorizationContext, Uri\) Method {#Abblix.Oidc.Server.Common.AuthorizationContextExtensions.WithDefaultResource(thisAbblix.Oidc.Server.Common.AuthorizationContext,System.Uri)}

Names the given resource as the audience when the context names none, so a token says which party is
meant to consume it rather than which one asked for it\.

```csharp
public static Abblix.Oidc.Server.Common.AuthorizationContext WithDefaultResource(this Abblix.Oidc.Server.Common.AuthorizationContext context, System.Uri? defaultResource);
```
#### Parameters

###### `context` [AuthorizationContext](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.AuthorizationContext 'Abblix\.Oidc\.Server\.Common\.AuthorizationContext') {#Abblix.Oidc.Server.Common.AuthorizationContextExtensions.WithDefaultResource(thisAbblix.Oidc.Server.Common.AuthorizationContext,System.Uri).context}

The authorization context to complete\.

###### `defaultResource` [System\.Uri](https://learn.microsoft.com/en-us/dotnet/api/system.uri 'System\.Uri') {#Abblix.Oidc.Server.Common.AuthorizationContextExtensions.WithDefaultResource(thisAbblix.Oidc.Server.Common.AuthorizationContext,System.Uri).defaultResource}

The resource to fall back on, or `null` to leave the context alone\.

#### Returns
[AuthorizationContext](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.AuthorizationContext 'Abblix\.Oidc\.Server\.Common\.AuthorizationContext')  
The context, with the default resource applied where it was needed\.

### Remarks
RFC 9068 Section 3: "If the request does not include a \`resource\` parameter, the authorization server
MUST use a default resource indicator in the \`aud\` claim\." With no default supplied the context is
returned untouched and the audience later falls back to the issuer \(see [ApplyTo\(this AuthorizationContext, JsonWebTokenPayload\)](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.AuthorizationContextExtensions#Abblix.Oidc.Server.Common.AuthorizationContextExtensions.ApplyTo(thisAbblix.Oidc.Server.Common.AuthorizationContext,Abblix.Jwt.JsonWebTokenPayload) 'Abblix\.Oidc\.Server\.Common\.AuthorizationContextExtensions\.ApplyTo\(this Abblix\.Oidc\.Server\.Common\.AuthorizationContext, Abblix\.Jwt\.JsonWebTokenPayload\)')\) \- the
behaviour changes only where a host states the default, because that value is read by every resource
server in the deployment\.
A context that already names a resource or an audience is returned unchanged: it says who the token is
for, and this only fills a gap\.
