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

## IJwtBearerIssuerProvider Interface

Provides comprehensive JWT Bearer grant type \(RFC 7523\) functionality including issuer management,
key resolution, and replay protection\.

```csharp
public interface IJwtBearerIssuerProvider
```

Derived  
↳ [JwtBearerIssuerProvider](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.JwtBearer.JwtBearerIssuerProvider 'Abblix\.Oidc\.Server\.Features\.JwtBearer\.JwtBearerIssuerProvider')

### Remarks
This interface centralizes JWT Bearer security functionality to:
\- Validate that the JWT issuer \(iss claim\) is from a trusted identity provider
\- Resolve the signing keys \(JWKS\) for verifying the JWT signature
\- Provide replay protection per RFC 7523 Section 5\.2
\- Expose configuration settings \(clock skew, algorithm whitelist, etc\.\)
### Properties

## IJwtBearerIssuerProvider\.Options Property {#Abblix.Oidc.Server.Features.JwtBearer.IJwtBearerIssuerProvider.Options}

Gets the JWT Bearer configuration options\.

```csharp
Abblix.Oidc.Server.Common.Configuration.JwtBearerOptions Options { get; }
```

#### Property Value
[JwtBearerOptions](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.Configuration.JwtBearerOptions 'Abblix\.Oidc\.Server\.Common\.Configuration\.JwtBearerOptions')
### Methods

## IJwtBearerIssuerProvider\.GetSigningKeysAsync\(string\) Method {#Abblix.Oidc.Server.Features.JwtBearer.IJwtBearerIssuerProvider.GetSigningKeysAsync(string)}

Resolves the signing keys for a trusted issuer, used to verify JWT assertion signatures\.

```csharp
System.Collections.Generic.IAsyncEnumerable<Abblix.Jwt.JsonWebKey> GetSigningKeysAsync(string issuer);
```
#### Parameters

###### `issuer` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.Oidc.Server.Features.JwtBearer.IJwtBearerIssuerProvider.GetSigningKeysAsync(string).issuer}

The issuer identifier from the JWT's 'iss' claim\.

#### Returns
[System\.Collections\.Generic\.IAsyncEnumerable&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.iasyncenumerable-1 'System\.Collections\.Generic\.IAsyncEnumerable\`1')[JsonWebKey](https://www.abblix.com/en/docs/api/abblix-jwt/Abblix.Jwt.JsonWebKey 'Abblix\.Jwt\.JsonWebKey')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.iasyncenumerable-1 'System\.Collections\.Generic\.IAsyncEnumerable\`1')  
An async enumerable of JSON Web Keys that can be used to verify signatures for JWTs
issued by this issuer\. Returns empty if the issuer is not trusted or has no configured keys\.

## IJwtBearerIssuerProvider\.GetTrustedIssuerAsync\(string\) Method {#Abblix.Oidc.Server.Features.JwtBearer.IJwtBearerIssuerProvider.GetTrustedIssuerAsync(string)}

Gets the full configuration for a trusted issuer\.

```csharp
System.Threading.Tasks.Task<Abblix.Oidc.Server.Common.Configuration.TrustedIssuer?> GetTrustedIssuerAsync(string issuer);
```
#### Parameters

###### `issuer` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.Oidc.Server.Features.JwtBearer.IJwtBearerIssuerProvider.GetTrustedIssuerAsync(string).issuer}

The issuer identifier from the JWT's 'iss' claim\.

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[TrustedIssuer](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.Configuration.TrustedIssuer 'Abblix\.Oidc\.Server\.Common\.Configuration\.TrustedIssuer')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')  
A task that completes with the trusted issuer configuration if found; null if not trusted\.

## IJwtBearerIssuerProvider\.IsReplayedAsync\(string, Nullable\<DateTimeOffset\>\) Method {#Abblix.Oidc.Server.Features.JwtBearer.IJwtBearerIssuerProvider.IsReplayedAsync(string,System.Nullable_System.DateTimeOffset_)}

Atomically records the JWT's JTI for replay protection and reports whether it had already
been recorded\. The entry is kept until the assertion's own expiration, so a JWT cannot be
replayed for any part of its validity window\.

```csharp
System.Threading.Tasks.Task<bool> IsReplayedAsync(string jti, System.Nullable<System.DateTimeOffset> expiresAt);
```
#### Parameters

###### `jti` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.Oidc.Server.Features.JwtBearer.IJwtBearerIssuerProvider.IsReplayedAsync(string,System.Nullable_System.DateTimeOffset_).jti}

The JWT ID \(jti claim\) to reserve\.

###### `expiresAt` [System\.Nullable&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.nullable-1 'System\.Nullable\`1')[System\.DateTimeOffset](https://learn.microsoft.com/en-us/dotnet/api/system.datetimeoffset 'System\.DateTimeOffset')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.nullable-1 'System\.Nullable\`1') {#Abblix.Oidc.Server.Features.JwtBearer.IJwtBearerIssuerProvider.IsReplayedAsync(string,System.Nullable_System.DateTimeOffset_).expiresAt}

The assertion's expiration; bounds how long the JTI is remembered\.

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[System\.Boolean](https://learn.microsoft.com/en-us/dotnet/api/system.boolean 'System\.Boolean')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')  
True if this JTI was already recorded \(a replay\); false if it was recorded just now\.

## IJwtBearerIssuerProvider\.IsTrustedIssuerAsync\(string\) Method {#Abblix.Oidc.Server.Features.JwtBearer.IJwtBearerIssuerProvider.IsTrustedIssuerAsync(string)}

Determines whether the specified issuer is trusted for JWT Bearer assertions\.

```csharp
System.Threading.Tasks.Task<bool> IsTrustedIssuerAsync(string issuer);
```
#### Parameters

###### `issuer` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.Oidc.Server.Features.JwtBearer.IJwtBearerIssuerProvider.IsTrustedIssuerAsync(string).issuer}

The issuer identifier from the JWT's 'iss' claim\.

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[System\.Boolean](https://learn.microsoft.com/en-us/dotnet/api/system.boolean 'System\.Boolean')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')  
A task that completes with true if the issuer is trusted and can be used for JWT Bearer grants;
otherwise, false\.
