#### [Abblix\.Oidc\.Server](https://www.abblix.com/en/docs/api/abblix-oidc-server 'index')
### [Abblix\.Oidc\.Server\.Features\.PairwiseIdentifiers](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.PairwiseIdentifiers 'Abblix\.Oidc\.Server\.Features\.PairwiseIdentifiers')

## SubjectTypeConverterExtensions Class

Comparing a session against the end users a client named\.

```csharp
public static class SubjectTypeConverterExtensions
```

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

## SubjectTypeConverterExtensions\.Names\(this ISubjectTypeConverter, AuthSession, IReadOnlyCollection\<string\>, ClientInfo\) Method {#Abblix.Oidc.Server.Features.PairwiseIdentifiers.SubjectTypeConverterExtensions.Names(thisAbblix.Oidc.Server.Features.PairwiseIdentifiers.ISubjectTypeConverter,Abblix.Oidc.Server.Features.UserAuthentication.AuthSession,System.Collections.Generic.IReadOnlyCollection_string_,Abblix.Oidc.Server.Features.ClientInformation.ClientInfo)}

Whether this session belongs to one of the end users named, as the client spells them\.

```csharp
public static bool Names(this Abblix.Oidc.Server.Features.PairwiseIdentifiers.ISubjectTypeConverter converter, Abblix.Oidc.Server.Features.UserAuthentication.AuthSession session, System.Collections.Generic.IReadOnlyCollection<string> subjects, Abblix.Oidc.Server.Features.ClientInformation.ClientInfo clientInfo);
```
#### Parameters

###### `converter` [ISubjectTypeConverter](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.PairwiseIdentifiers.ISubjectTypeConverter 'Abblix\.Oidc\.Server\.Features\.PairwiseIdentifiers\.ISubjectTypeConverter') {#Abblix.Oidc.Server.Features.PairwiseIdentifiers.SubjectTypeConverterExtensions.Names(thisAbblix.Oidc.Server.Features.PairwiseIdentifiers.ISubjectTypeConverter,Abblix.Oidc.Server.Features.UserAuthentication.AuthSession,System.Collections.Generic.IReadOnlyCollection_string_,Abblix.Oidc.Server.Features.ClientInformation.ClientInfo).converter}

Seals the session's subject the way this client sees it\.

###### `session` [AuthSession](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.UserAuthentication.AuthSession 'Abblix\.Oidc\.Server\.Features\.UserAuthentication\.AuthSession') {#Abblix.Oidc.Server.Features.PairwiseIdentifiers.SubjectTypeConverterExtensions.Names(thisAbblix.Oidc.Server.Features.PairwiseIdentifiers.ISubjectTypeConverter,Abblix.Oidc.Server.Features.UserAuthentication.AuthSession,System.Collections.Generic.IReadOnlyCollection_string_,Abblix.Oidc.Server.Features.ClientInformation.ClientInfo).session}

The session to judge\.

###### `subjects` [System\.Collections\.Generic\.IReadOnlyCollection&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ireadonlycollection-1 'System\.Collections\.Generic\.IReadOnlyCollection\`1')[System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ireadonlycollection-1 'System\.Collections\.Generic\.IReadOnlyCollection\`1') {#Abblix.Oidc.Server.Features.PairwiseIdentifiers.SubjectTypeConverterExtensions.Names(thisAbblix.Oidc.Server.Features.PairwiseIdentifiers.ISubjectTypeConverter,Abblix.Oidc.Server.Features.UserAuthentication.AuthSession,System.Collections.Generic.IReadOnlyCollection_string_,Abblix.Oidc.Server.Features.ClientInformation.ClientInfo).subjects}

The end users the request will accept\. Empty accepts nobody\.

###### `clientInfo` [ClientInfo](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.ClientInformation.ClientInfo 'Abblix\.Oidc\.Server\.Features\.ClientInformation\.ClientInfo') {#Abblix.Oidc.Server.Features.PairwiseIdentifiers.SubjectTypeConverterExtensions.Names(thisAbblix.Oidc.Server.Features.PairwiseIdentifiers.ISubjectTypeConverter,Abblix.Oidc.Server.Features.UserAuthentication.AuthSession,System.Collections.Generic.IReadOnlyCollection_string_,Abblix.Oidc.Server.Features.ClientInformation.ClientInfo).clientInfo}

The client whose spelling of a subject is in force\.

#### Returns
[System\.Boolean](https://learn.microsoft.com/en-us/dotnet/api/system.boolean 'System\.Boolean')

### Remarks
OpenID Connect Core 1\.0 Section 3\.1\.2\.2 requires this wherever a request names an end user: the server
"MUST NOT reply with an ID Token or Access Token for a different user, even if they have an active
session"\. Every endpoint accepting such a name needs the same comparison, and one that wrote its own
would have to rediscover both properties below\.

The session is converted forward rather than the name opened, because only the forward direction
answers for a client whose sector moved since the name was minted: opening would fail, while sealing
produces the pseudonym that client would receive today and compares it against what was sent.

Neither direction is total. Sealing needs pairwise settings the deployment may not have configured, and
a client registered as pairwise without them makes the converter throw. That is a configuration fault
rather than an answer about this end user, so it is reported as no match: the caller refuses this
session instead of faulting every request that merely named somebody.
