#### [Abblix\.SecurityEvents](https://www.abblix.com/en/docs/api/abblix-securityevents 'index')
### [Abblix\.SecurityEvents\.Validation](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.Validation 'Abblix\.SecurityEvents\.Validation')

## SecurityEventTokenValidatorExtensions Class

The consumer\-facing entry into validation: one call that runs a compact token through a
validator and shapes the outcome into the result a consumer acts on\. Defined over the
interface rather than a class of its own, because after composition the resolved
[ISecurityEventTokenValidator](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.Validation.ISecurityEventTokenValidator 'Abblix\.SecurityEvents\.Validation\.ISecurityEventTokenValidator') IS the whole profile \- there is no separate driver
to name, hold or inject\.

```csharp
public static class SecurityEventTokenValidatorExtensions
```

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

## SecurityEventTokenValidatorExtensions\.ValidateAsync\(this ISecurityEventTokenValidator, string, SecurityEventTokenValidationOptions, CancellationToken\) Method {#Abblix.SecurityEvents.Validation.SecurityEventTokenValidatorExtensions.ValidateAsync(thisAbblix.SecurityEvents.Validation.ISecurityEventTokenValidator,string,Abblix.SecurityEvents.Validation.SecurityEventTokenValidationOptions,System.Threading.CancellationToken)}

Validates a token\.

```csharp
public static System.Threading.Tasks.Task<Abblix.Utils.Result<Abblix.SecurityEvents.Validation.ValidatedSecurityEventToken,Abblix.SecurityEvents.Validation.SecurityEventTokenValidationError>> ValidateAsync(this Abblix.SecurityEvents.Validation.ISecurityEventTokenValidator validator, string compactToken, Abblix.SecurityEvents.Validation.SecurityEventTokenValidationOptions options, System.Threading.CancellationToken cancellationToken=default(System.Threading.CancellationToken));
```
#### Parameters

###### `validator` [ISecurityEventTokenValidator](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.Validation.ISecurityEventTokenValidator 'Abblix\.SecurityEvents\.Validation\.ISecurityEventTokenValidator') {#Abblix.SecurityEvents.Validation.SecurityEventTokenValidatorExtensions.ValidateAsync(thisAbblix.SecurityEvents.Validation.ISecurityEventTokenValidator,string,Abblix.SecurityEvents.Validation.SecurityEventTokenValidationOptions,System.Threading.CancellationToken).validator}

The validation profile \- typically the composed pipeline\.

###### `compactToken` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.SecurityEvents.Validation.SecurityEventTokenValidatorExtensions.ValidateAsync(thisAbblix.SecurityEvents.Validation.ISecurityEventTokenValidator,string,Abblix.SecurityEvents.Validation.SecurityEventTokenValidationOptions,System.Threading.CancellationToken).compactToken}

The token as received, in compact serialization\.

###### `options` [SecurityEventTokenValidationOptions](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.Validation.SecurityEventTokenValidationOptions 'Abblix\.SecurityEvents\.Validation\.SecurityEventTokenValidationOptions') {#Abblix.SecurityEvents.Validation.SecurityEventTokenValidatorExtensions.ValidateAsync(thisAbblix.SecurityEvents.Validation.ISecurityEventTokenValidator,string,Abblix.SecurityEvents.Validation.SecurityEventTokenValidationOptions,System.Threading.CancellationToken).options}

What this run expects of the token\.

###### `cancellationToken` [System\.Threading\.CancellationToken](https://learn.microsoft.com/en-us/dotnet/api/system.threading.cancellationtoken 'System\.Threading\.CancellationToken') {#Abblix.SecurityEvents.Validation.SecurityEventTokenValidatorExtensions.ValidateAsync(thisAbblix.SecurityEvents.Validation.ISecurityEventTokenValidator,string,Abblix.SecurityEvents.Validation.SecurityEventTokenValidationOptions,System.Threading.CancellationToken).cancellationToken}

Cancels I/O the validators perform, such as key retrieval\.

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.Utils\.Result&lt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\`2')[ValidatedSecurityEventToken](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.Validation.ValidatedSecurityEventToken 'Abblix\.SecurityEvents\.Validation\.ValidatedSecurityEventToken')[,](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\`2')[SecurityEventTokenValidationError](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.Validation.SecurityEventTokenValidationError 'Abblix\.SecurityEvents\.Validation\.SecurityEventTokenValidationError')[&gt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Result_TSuccess_TFailure_ 'Abblix\.Utils\.Result\`2')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')  
The validated token with its typed payloads, or the first error a validator reported\.

#### Exceptions

[System\.InvalidOperationException](https://learn.microsoft.com/en-us/dotnet/api/system.invalidoperationexception 'System\.InvalidOperationException')  
Every check passed but none produced a validated token\. A profile that removes the
signature step must still set the context's token from a validator of its own \- the
exception is what keeps that omission from surfacing as a null to the consumer\.
