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

## IClientAuthenticator Interface

Defines the interface for client authentication, supporting various authentication methods during OAuth flows\.

```csharp
public interface IClientAuthenticator
```

Derived  
↳ [ClientSecretBasicAuthenticator](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.ClientAuthentication.ClientSecretBasicAuthenticator 'Abblix\.Oidc\.Server\.Features\.ClientAuthentication\.ClientSecretBasicAuthenticator')  
↳ [ClientSecretPostAuthenticator](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.ClientAuthentication.ClientSecretPostAuthenticator 'Abblix\.Oidc\.Server\.Features\.ClientAuthentication\.ClientSecretPostAuthenticator')  
↳ [JwtAssertionAuthenticatorBase](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.ClientAuthentication.JwtAssertionAuthenticatorBase 'Abblix\.Oidc\.Server\.Features\.ClientAuthentication\.JwtAssertionAuthenticatorBase')  
↳ [NoneClientAuthenticator](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.ClientAuthentication.NoneClientAuthenticator 'Abblix\.Oidc\.Server\.Features\.ClientAuthentication\.NoneClientAuthenticator')  
↳ [TlsClientAuthenticator](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.ClientAuthentication.TlsClientAuthenticator 'Abblix\.Oidc\.Server\.Features\.ClientAuthentication\.TlsClientAuthenticator')  
↳ [TlsMetadataClientAuthenticator](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.ClientAuthentication.TlsMetadataClientAuthenticator 'Abblix\.Oidc\.Server\.Features\.ClientAuthentication\.TlsMetadataClientAuthenticator')
### Properties

## IClientAuthenticator\.ClientAuthenticationMethodsSupported Property {#Abblix.Oidc.Server.Features.ClientAuthentication.IClientAuthenticator.ClientAuthenticationMethodsSupported}

Specifies the authentication methods supported by this authenticator\.
This property should return a value that identifies the authentication scheme
\(e\.g\., "client\_secret\_basic", "private\_key\_jwt"\) supported by the implementer\.

```csharp
System.Collections.Generic.IEnumerable<string> ClientAuthenticationMethodsSupported { get; }
```

#### Property Value
[System\.Collections\.Generic\.IEnumerable&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerable-1 'System\.Collections\.Generic\.IEnumerable\`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.ienumerable-1 'System\.Collections\.Generic\.IEnumerable\`1')
### Methods

## IClientAuthenticator\.TryAuthenticateClientAsync\(ClientRequest\) Method {#Abblix.Oidc.Server.Features.ClientAuthentication.IClientAuthenticator.TryAuthenticateClientAsync(Abblix.Oidc.Server.Model.ClientRequest)}

Attempts to authenticate a client based on the provided request\.
It verifies the client's credentials and determines the authenticity of the client\.

```csharp
System.Threading.Tasks.Task<Abblix.Oidc.Server.Features.ClientInformation.ClientInfo?> TryAuthenticateClientAsync(Abblix.Oidc.Server.Model.ClientRequest request);
```
#### Parameters

###### `request` [ClientRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Model.ClientRequest 'Abblix\.Oidc\.Server\.Model\.ClientRequest') {#Abblix.Oidc.Server.Features.ClientAuthentication.IClientAuthenticator.TryAuthenticateClientAsync(Abblix.Oidc.Server.Model.ClientRequest).request}

The client request containing authentication information\.

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[ClientInfo](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.ClientInformation.ClientInfo 'Abblix\.Oidc\.Server\.Features\.ClientInformation\.ClientInfo')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')  
A task that resolves to the authenticated [ClientInfo](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.ClientInformation.ClientInfo 'Abblix\.Oidc\.Server\.Features\.ClientInformation\.ClientInfo') if successful,
or null if authentication fails\.
