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

## SubjectTypeValidator Class

Validates the OIDC Core Section 8 `subject_type` metadata and computes the pairwise sector
identifier\. When `pairwise` is requested, a supplied `sector_identifier_uri` \(HTTPS\) is
dereferenced and every URI the registration is required to have listed there is checked against
its contents; otherwise the host is taken from the registered redirect URIs, which must agree on
one \(OIDC Core Section 8\.1\)\. A backchannel client that registered NO redirect URI takes its host
instead from the URI CIBA Core 1\.0 Section 4 puts in their place \- the `jwks_uri` in poll and
ping, the `backchannel_client_notification_endpoint` in push\. Registering both is allowed and
they need not agree: the redirect URIs decide, and the backchannel URI is only ever the sector of a
client that has none\.
The resolved host is stored on the context for later persistence\.

```csharp
public class SubjectTypeValidator : Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Validation.IClientRegistrationContextValidator
```

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

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

## SubjectTypeValidator\(ILogger\<SubjectTypeValidator\>, ISecureHttpFetcher\) Constructor {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Validation.SubjectTypeValidator.SubjectTypeValidator(Microsoft.Extensions.Logging.ILogger_Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Validation.SubjectTypeValidator_,Abblix.Oidc.Server.Features.SecureHttpFetch.ISecureHttpFetcher)}

Validates the OIDC Core Section 8 `subject_type` metadata and computes the pairwise sector
identifier\. When `pairwise` is requested, a supplied `sector_identifier_uri` \(HTTPS\) is
dereferenced and every URI the registration is required to have listed there is checked against
its contents; otherwise the host is taken from the registered redirect URIs, which must agree on
one \(OIDC Core Section 8\.1\)\. A backchannel client that registered NO redirect URI takes its host
instead from the URI CIBA Core 1\.0 Section 4 puts in their place \- the `jwks_uri` in poll and
ping, the `backchannel_client_notification_endpoint` in push\. Registering both is allowed and
they need not agree: the redirect URIs decide, and the backchannel URI is only ever the sector of a
client that has none\.
The resolved host is stored on the context for later persistence\.

```csharp
public SubjectTypeValidator(Microsoft.Extensions.Logging.ILogger<Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Validation.SubjectTypeValidator> logger, Abblix.Oidc.Server.Features.SecureHttpFetch.ISecureHttpFetcher secureHttpFetcher);
```
#### Parameters

###### `logger` [Microsoft\.Extensions\.Logging\.ILogger&lt;](https://learn.microsoft.com/en-us/dotnet/api/microsoft.extensions.logging.ilogger-1 'Microsoft\.Extensions\.Logging\.ILogger\`1')[SubjectTypeValidator](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Validation.SubjectTypeValidator 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Validation\.SubjectTypeValidator')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/microsoft.extensions.logging.ilogger-1 'Microsoft\.Extensions\.Logging\.ILogger\`1') {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Validation.SubjectTypeValidator.SubjectTypeValidator(Microsoft.Extensions.Logging.ILogger_Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Validation.SubjectTypeValidator_,Abblix.Oidc.Server.Features.SecureHttpFetch.ISecureHttpFetcher).logger}

Logger used for warnings about sector\-identifier mismatches\.

###### `secureHttpFetcher` [ISecureHttpFetcher](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.SecureHttpFetch.ISecureHttpFetcher 'Abblix\.Oidc\.Server\.Features\.SecureHttpFetch\.ISecureHttpFetcher') {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Validation.SubjectTypeValidator.SubjectTypeValidator(Microsoft.Extensions.Logging.ILogger_Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Validation.SubjectTypeValidator_,Abblix.Oidc.Server.Features.SecureHttpFetch.ISecureHttpFetcher).secureHttpFetcher}

SSRF\-protected fetcher for the sector identifier document\.
### Methods

## SubjectTypeValidator\.ValidateAsync\(ClientRegistrationValidationContext\) Method {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Validation.SubjectTypeValidator.ValidateAsync(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Validation.ClientRegistrationValidationContext)}

Validates the slice of registration metadata this implementation owns\.
May mutate [ClientRegistrationValidationContext](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Validation.ClientRegistrationValidationContext 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Validation\.ClientRegistrationValidationContext') with derived values
\(for example the resolved sector identifier\)\.

```csharp
public System.Threading.Tasks.Task<Abblix.Oidc.Server.Common.OidcError?> ValidateAsync(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Validation.ClientRegistrationValidationContext context);
```
#### Parameters

###### `context` [ClientRegistrationValidationContext](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Validation.ClientRegistrationValidationContext 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Validation\.ClientRegistrationValidationContext') {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Validation.SubjectTypeValidator.ValidateAsync(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Validation.ClientRegistrationValidationContext).context}

The shared validation context for the current request\.

Implements [ValidateAsync\(ClientRegistrationValidationContext\)](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Validation.IClientRegistrationContextValidator#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Validation.IClientRegistrationContextValidator.ValidateAsync(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Validation.ClientRegistrationValidationContext) 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Validation\.IClientRegistrationContextValidator\.ValidateAsync\(Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Validation\.ClientRegistrationValidationContext\)')

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[OidcError](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.OidcError 'Abblix\.Oidc\.Server\.Common\.OidcError')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')  
An [OidcError](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.OidcError 'Abblix\.Oidc\.Server\.Common\.OidcError') describing the rejection, or `null` when valid\.
