#### [Abblix\.SharedSignals](https://www.abblix.com/en/docs/api/abblix-sharedsignals 'index')
### [Abblix\.SharedSignals\.Receiver\.SecurityEvent](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Receiver.SecurityEvent 'Abblix\.SharedSignals\.Receiver\.SecurityEvent')

## StreamIssuerStep Class

Binds each event to the stream it arrived on: the "iss" claim must equal the Stream
Configuration's issuer \(SSF 1\.0 Section 4\.1\.6\)\. Without this binding a token from any trusted
issuer would be accepted on any stream, and events could be replayed across streams whose
issuers differ\.

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

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

Implements [Abblix\.SecurityEvents\.Validation\.ISecurityCriticalValidator](https://learn.microsoft.com/en-us/dotnet/api/abblix.securityevents.validation.isecuritycriticalvalidator 'Abblix\.SecurityEvents\.Validation\.ISecurityCriticalValidator'), [Abblix\.SecurityEvents\.Validation\.ISecurityEventTokenValidator](https://learn.microsoft.com/en-us/dotnet/api/abblix.securityevents.validation.isecurityeventtokenvalidator 'Abblix\.SecurityEvents\.Validation\.ISecurityEventTokenValidator')

### Remarks
Section 4\.1\.6 names two values to match \- the Stream Configuration's "iss" and the issuer
the Transmitter Configuration was requested from\. The receiver proved those equal when it
accepted the stream \(Sections 7\.2\.2, 8\.1\.1\.1\), so the single comparison here carries both
halves of the rule; see [StreamIssuer](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Receiver.SecurityEvent.SharedSignalsValidationOptions#Abblix.SharedSignals.Receiver.SecurityEvent.SharedSignalsValidationOptions.StreamIssuer 'Abblix\.SharedSignals\.Receiver\.SecurityEvent\.SharedSignalsValidationOptions\.StreamIssuer')\.
### Methods

## StreamIssuerStep\.ValidateAsync\(SecurityEventTokenValidationContext, CancellationToken\) Method {#Abblix.SharedSignals.Receiver.SecurityEvent.StreamIssuerStep.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` [Abblix\.SecurityEvents\.Validation\.SecurityEventTokenValidationContext](https://learn.microsoft.com/en-us/dotnet/api/abblix.securityevents.validation.securityeventtokenvalidationcontext 'Abblix\.SecurityEvents\.Validation\.SecurityEventTokenValidationContext') {#Abblix.SharedSignals.Receiver.SecurityEvent.StreamIssuerStep.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.SharedSignals.Receiver.SecurityEvent.StreamIssuerStep.ValidateAsync(Abblix.SecurityEvents.Validation.SecurityEventTokenValidationContext,System.Threading.CancellationToken).cancellationToken}

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

Implements [ValidateAsync\(SecurityEventTokenValidationContext, CancellationToken\)](https://learn.microsoft.com/en-us/dotnet/api/abblix.securityevents.validation.isecurityeventtokenvalidator.validateasync#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')[Abblix\.SecurityEvents\.Validation\.SecurityEventTokenValidationError](https://learn.microsoft.com/en-us/dotnet/api/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\.
