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

## IssuerAllowlistStep Class

Requires the "iss" claim to name an issuer this receiver accepts events from\. The claim is
REQUIRED \(RFC 8417 Section 2\.2\), and running the check before the signature step keeps an
unknown issuer's token from costing a key resolution: the signature step's resolver would
refuse it anyway, but refusing here names the reason precisely\.

```csharp
public sealed class IssuerAllowlistStep : Abblix.SecurityEvents.Validation.ISecurityCriticalValidator, Abblix.SecurityEvents.Validation.ISecurityEventTokenValidator
```

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

Implements [ISecurityCriticalValidator](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.Validation.ISecurityCriticalValidator 'Abblix\.SecurityEvents\.Validation\.ISecurityCriticalValidator'), [ISecurityEventTokenValidator](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.Validation.ISecurityEventTokenValidator 'Abblix\.SecurityEvents\.Validation\.ISecurityEventTokenValidator')

### Remarks
The issuer read here is unverified \- it decides only whether to PROCEED, and proceeding means
verifying a signature against that issuer's keys, so a lie about "iss" buys an attacker
nothing: the signature against the claimed issuer's keys is exactly what fails next\.
Security\-critical, because this step is also what keeps that unverified claim from steering
the key fetch: with the allowlist gone, a crafted "iss" aims the resolver's outbound request
at a network target of the sender's choosing, and the failed signature afterwards is no
consolation \- the request itself was the prize\.
### Methods

## IssuerAllowlistStep\.ValidateAsync\(SecurityEventTokenValidationContext, CancellationToken\) Method {#Abblix.SecurityEvents.Validation.Steps.IssuerAllowlistStep.ValidateAsync(Abblix.SecurityEvents.Validation.SecurityEventTokenValidationContext,System.Threading.CancellationToken)}

Checks the token in flight\.

```csharp
public System.Threading.Tasks.ValueTask<Abblix.SecurityEvents.Validation.SecurityEventTokenValidationError?> ValidateAsync(Abblix.SecurityEvents.Validation.SecurityEventTokenValidationContext context, System.Threading.CancellationToken cancellationToken);
```
#### Parameters

###### `context` [SecurityEventTokenValidationContext](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.Validation.SecurityEventTokenValidationContext 'Abblix\.SecurityEvents\.Validation\.SecurityEventTokenValidationContext') {#Abblix.SecurityEvents.Validation.Steps.IssuerAllowlistStep.ValidateAsync(Abblix.SecurityEvents.Validation.SecurityEventTokenValidationContext,System.Threading.CancellationToken).context}

The state accumulated by earlier steps\.

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

Cancels I/O the step performs, such as key retrieval\.

Implements [ValidateAsync\(SecurityEventTokenValidationContext, CancellationToken\)](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.Validation.ISecurityEventTokenValidator#Abblix.SecurityEvents.Validation.ISecurityEventTokenValidator.ValidateAsync(Abblix.SecurityEvents.Validation.SecurityEventTokenValidationContext,System.Threading.CancellationToken) 'Abblix\.SecurityEvents\.Validation\.ISecurityEventTokenValidator\.ValidateAsync\(Abblix\.SecurityEvents\.Validation\.SecurityEventTokenValidationContext, System\.Threading\.CancellationToken\)')

#### Returns
[System\.Threading\.Tasks\.ValueTask&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.valuetask-1 'System\.Threading\.Tasks\.ValueTask\`1')[SecurityEventTokenValidationError](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.Validation.SecurityEventTokenValidationError 'Abblix\.SecurityEvents\.Validation\.SecurityEventTokenValidationError')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.valuetask-1 'System\.Threading\.Tasks\.ValueTask\`1')  
Null to pass the token on; an error to stop the pipeline with that verdict\.
