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

## BackChannelLogoutHandler Class

Takes one back\-channel logout request from the transport and answers it: reads the
`logout_token` out of the posted form, puts it through the receiver's profile, hands the
notification to the application, and shapes the response
\(OpenID Connect Back\-Channel Logout 1\.0 Sections 2\.5 and 2\.8\)\.

```csharp
public sealed class BackChannelLogoutHandler
```

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

### Remarks
Transport\-neutral, like the push intake beside it: it takes the two things any adapter has \-
the content type and the body \- and returns a result the adapter renders\. That keeps the
specification's request and response rules in one place rather than in each host framework's
endpoint\.
### Constructors

## BackChannelLogoutHandler\(ILogger\<BackChannelLogoutHandler\>, ILogoutTokenValidator, ILogoutNotificationSink\) Constructor {#Abblix.SecurityEvents.BackChannelLogout.BackChannelLogoutHandler.BackChannelLogoutHandler(Microsoft.Extensions.Logging.ILogger_Abblix.SecurityEvents.BackChannelLogout.BackChannelLogoutHandler_,Abblix.SecurityEvents.BackChannelLogout.ILogoutTokenValidator,Abblix.SecurityEvents.BackChannelLogout.ILogoutNotificationSink)}

Takes one back\-channel logout request from the transport and answers it: reads the
`logout_token` out of the posted form, puts it through the receiver's profile, hands the
notification to the application, and shapes the response
\(OpenID Connect Back\-Channel Logout 1\.0 Sections 2\.5 and 2\.8\)\.

```csharp
public BackChannelLogoutHandler(Microsoft.Extensions.Logging.ILogger<Abblix.SecurityEvents.BackChannelLogout.BackChannelLogoutHandler> logger, Abblix.SecurityEvents.BackChannelLogout.ILogoutTokenValidator validator, Abblix.SecurityEvents.BackChannelLogout.ILogoutNotificationSink sink);
```
#### 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')[BackChannelLogoutHandler](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.BackChannelLogout.BackChannelLogoutHandler 'Abblix\.SecurityEvents\.BackChannelLogout\.BackChannelLogoutHandler')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/microsoft.extensions.logging.ilogger-1 'Microsoft\.Extensions\.Logging\.ILogger\`1') {#Abblix.SecurityEvents.BackChannelLogout.BackChannelLogoutHandler.BackChannelLogoutHandler(Microsoft.Extensions.Logging.ILogger_Abblix.SecurityEvents.BackChannelLogout.BackChannelLogoutHandler_,Abblix.SecurityEvents.BackChannelLogout.ILogoutTokenValidator,Abblix.SecurityEvents.BackChannelLogout.ILogoutNotificationSink).logger}

Records every refusal, which no other party keeps\.

###### `validator` [ILogoutTokenValidator](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.BackChannelLogout.ILogoutTokenValidator 'Abblix\.SecurityEvents\.BackChannelLogout\.ILogoutTokenValidator') {#Abblix.SecurityEvents.BackChannelLogout.BackChannelLogoutHandler.BackChannelLogoutHandler(Microsoft.Extensions.Logging.ILogger_Abblix.SecurityEvents.BackChannelLogout.BackChannelLogoutHandler_,Abblix.SecurityEvents.BackChannelLogout.ILogoutTokenValidator,Abblix.SecurityEvents.BackChannelLogout.ILogoutNotificationSink).validator}

The Logout Token's validation, which is Section 2\.6\.

###### `sink` [ILogoutNotificationSink](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.BackChannelLogout.ILogoutNotificationSink 'Abblix\.SecurityEvents\.BackChannelLogout\.ILogoutNotificationSink') {#Abblix.SecurityEvents.BackChannelLogout.BackChannelLogoutHandler.BackChannelLogoutHandler(Microsoft.Extensions.Logging.ILogger_Abblix.SecurityEvents.BackChannelLogout.BackChannelLogoutHandler_,Abblix.SecurityEvents.BackChannelLogout.ILogoutTokenValidator,Abblix.SecurityEvents.BackChannelLogout.ILogoutNotificationSink).sink}

Where the notification lands, which is Section 2\.7\.

### Remarks
Transport\-neutral, like the push intake beside it: it takes the two things any adapter has \-
the content type and the body \- and returns a result the adapter renders\. That keeps the
specification's request and response rules in one place rather than in each host framework's
endpoint\.
### Methods

## BackChannelLogoutHandler\.HandleAsync\(string, string, CancellationToken\) Method {#Abblix.SecurityEvents.BackChannelLogout.BackChannelLogoutHandler.HandleAsync(string,string,System.Threading.CancellationToken)}

Handles one logout request\.

```csharp
public System.Threading.Tasks.Task<Abblix.SecurityEvents.BackChannelLogout.BackChannelLogoutResult> HandleAsync(string? contentType, string? body, System.Threading.CancellationToken cancellationToken=default(System.Threading.CancellationToken));
```
#### Parameters

###### `contentType` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.SecurityEvents.BackChannelLogout.BackChannelLogoutHandler.HandleAsync(string,string,System.Threading.CancellationToken).contentType}

The request's Content\-Type header, as received\.

###### `body` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.SecurityEvents.BackChannelLogout.BackChannelLogoutHandler.HandleAsync(string,string,System.Threading.CancellationToken).body}

The request body: a form\-encoded parameter list\.

###### `cancellationToken` [System\.Threading\.CancellationToken](https://learn.microsoft.com/en-us/dotnet/api/system.threading.cancellationtoken 'System\.Threading\.CancellationToken') {#Abblix.SecurityEvents.BackChannelLogout.BackChannelLogoutHandler.HandleAsync(string,string,System.Threading.CancellationToken).cancellationToken}

Cancels validation I/O and processing\.

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[BackChannelLogoutResult](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.BackChannelLogout.BackChannelLogoutResult 'Abblix\.SecurityEvents\.BackChannelLogout\.BackChannelLogoutResult')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')
