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

## ValidTokenRequest Class

Represents a valid token request along with related authentication and authorization information\.

```csharp
public record ValidTokenRequest : System.IEquatable<Abblix.Oidc.Server.Endpoints.Token.Interfaces.ValidTokenRequest>
```

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

Implements [System\.IEquatable&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.iequatable-1 'System\.IEquatable\`1')[ValidTokenRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Token.Interfaces.ValidTokenRequest 'Abblix\.Oidc\.Server\.Endpoints\.Token\.Interfaces\.ValidTokenRequest')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.iequatable-1 'System\.IEquatable\`1')
### Constructors

## ValidTokenRequest\(TokenValidationContext\) Constructor {#Abblix.Oidc.Server.Endpoints.Token.Interfaces.ValidTokenRequest.ValidTokenRequest(Abblix.Oidc.Server.Endpoints.Token.Validation.TokenValidationContext)}

Builds the validated request from a populated [TokenValidationContext](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Token.Validation.TokenValidationContext 'Abblix\.Oidc\.Server\.Endpoints\.Token\.Validation\.TokenValidationContext'), taking
the mutual\-TLS client certificate \(if any\) and the DPoP proof\-of\-possession key
thumbprint \(if any\) from the populated context\.

```csharp
public ValidTokenRequest(Abblix.Oidc.Server.Endpoints.Token.Validation.TokenValidationContext context);
```
#### Parameters

###### `context` [TokenValidationContext](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Token.Validation.TokenValidationContext 'Abblix\.Oidc\.Server\.Endpoints\.Token\.Validation\.TokenValidationContext') {#Abblix.Oidc.Server.Endpoints.Token.Interfaces.ValidTokenRequest.ValidTokenRequest(Abblix.Oidc.Server.Endpoints.Token.Validation.TokenValidationContext).context}

## ValidTokenRequest\(TokenRequest, AuthorizedGrant, ClientInfo, ScopeDefinition\[\], ResourceDefinition\[\], X509Certificate2, string\) Constructor {#Abblix.Oidc.Server.Endpoints.Token.Interfaces.ValidTokenRequest.ValidTokenRequest(Abblix.Oidc.Server.Model.TokenRequest,Abblix.Oidc.Server.Endpoints.Token.Interfaces.AuthorizedGrant,Abblix.Oidc.Server.Features.ClientInformation.ClientInfo,Abblix.Oidc.Server.Common.Constants.ScopeDefinition[],Abblix.Oidc.Server.Common.Constants.ResourceDefinition[],System.Security.Cryptography.X509Certificates.X509Certificate2,string)}

Represents a valid token request along with related authentication and authorization information\.

```csharp
public ValidTokenRequest(Abblix.Oidc.Server.Model.TokenRequest Model, Abblix.Oidc.Server.Endpoints.Token.Interfaces.AuthorizedGrant AuthorizedGrant, Abblix.Oidc.Server.Features.ClientInformation.ClientInfo ClientInfo, Abblix.Oidc.Server.Common.Constants.ScopeDefinition[] Scope, Abblix.Oidc.Server.Common.Constants.ResourceDefinition[] Resources, System.Security.Cryptography.X509Certificates.X509Certificate2? ClientCertificate=null, string? ProofKeyThumbprint=null);
```
#### Parameters

###### `Model` [TokenRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Model.TokenRequest 'Abblix\.Oidc\.Server\.Model\.TokenRequest') {#Abblix.Oidc.Server.Endpoints.Token.Interfaces.ValidTokenRequest.ValidTokenRequest(Abblix.Oidc.Server.Model.TokenRequest,Abblix.Oidc.Server.Endpoints.Token.Interfaces.AuthorizedGrant,Abblix.Oidc.Server.Features.ClientInformation.ClientInfo,Abblix.Oidc.Server.Common.Constants.ScopeDefinition[],Abblix.Oidc.Server.Common.Constants.ResourceDefinition[],System.Security.Cryptography.X509Certificates.X509Certificate2,string).Model}

The token request model containing the information required to process the token request\.

###### `AuthorizedGrant` [AuthorizedGrant](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Token.Interfaces.AuthorizedGrant 'Abblix\.Oidc\.Server\.Endpoints\.Token\.Interfaces\.AuthorizedGrant') {#Abblix.Oidc.Server.Endpoints.Token.Interfaces.ValidTokenRequest.ValidTokenRequest(Abblix.Oidc.Server.Model.TokenRequest,Abblix.Oidc.Server.Endpoints.Token.Interfaces.AuthorizedGrant,Abblix.Oidc.Server.Features.ClientInformation.ClientInfo,Abblix.Oidc.Server.Common.Constants.ScopeDefinition[],Abblix.Oidc.Server.Common.Constants.ResourceDefinition[],System.Security.Cryptography.X509Certificates.X509Certificate2,string).AuthorizedGrant}

The authorized grant result which encapsulates the result of the authorization
            process\.

###### `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.Endpoints.Token.Interfaces.ValidTokenRequest.ValidTokenRequest(Abblix.Oidc.Server.Model.TokenRequest,Abblix.Oidc.Server.Endpoints.Token.Interfaces.AuthorizedGrant,Abblix.Oidc.Server.Features.ClientInformation.ClientInfo,Abblix.Oidc.Server.Common.Constants.ScopeDefinition[],Abblix.Oidc.Server.Common.Constants.ResourceDefinition[],System.Security.Cryptography.X509Certificates.X509Certificate2,string).ClientInfo}

Information about the client making the token request, including client credentials and
            metadata\.

###### `Scope` [ScopeDefinition](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.Constants.ScopeDefinition 'Abblix\.Oidc\.Server\.Common\.Constants\.ScopeDefinition')[\[\]](https://learn.microsoft.com/en-us/dotnet/api/system.array 'System\.Array') {#Abblix.Oidc.Server.Endpoints.Token.Interfaces.ValidTokenRequest.ValidTokenRequest(Abblix.Oidc.Server.Model.TokenRequest,Abblix.Oidc.Server.Endpoints.Token.Interfaces.AuthorizedGrant,Abblix.Oidc.Server.Features.ClientInformation.ClientInfo,Abblix.Oidc.Server.Common.Constants.ScopeDefinition[],Abblix.Oidc.Server.Common.Constants.ResourceDefinition[],System.Security.Cryptography.X509Certificates.X509Certificate2,string).Scope}

The scopes associated with the token request, indicating the permissions
            requested by the client\.

###### `Resources` [ResourceDefinition](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.Constants.ResourceDefinition 'Abblix\.Oidc\.Server\.Common\.Constants\.ResourceDefinition')[\[\]](https://learn.microsoft.com/en-us/dotnet/api/system.array 'System\.Array') {#Abblix.Oidc.Server.Endpoints.Token.Interfaces.ValidTokenRequest.ValidTokenRequest(Abblix.Oidc.Server.Model.TokenRequest,Abblix.Oidc.Server.Endpoints.Token.Interfaces.AuthorizedGrant,Abblix.Oidc.Server.Features.ClientInformation.ClientInfo,Abblix.Oidc.Server.Common.Constants.ScopeDefinition[],Abblix.Oidc.Server.Common.Constants.ResourceDefinition[],System.Security.Cryptography.X509Certificates.X509Certificate2,string).Resources}

The resources associated with the token request,
            detailing the specific resources the client is requesting access to\.

###### `ClientCertificate` [System\.Security\.Cryptography\.X509Certificates\.X509Certificate2](https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptography.x509certificates.x509certificate2 'System\.Security\.Cryptography\.X509Certificates\.X509Certificate2') {#Abblix.Oidc.Server.Endpoints.Token.Interfaces.ValidTokenRequest.ValidTokenRequest(Abblix.Oidc.Server.Model.TokenRequest,Abblix.Oidc.Server.Endpoints.Token.Interfaces.AuthorizedGrant,Abblix.Oidc.Server.Features.ClientInformation.ClientInfo,Abblix.Oidc.Server.Common.Constants.ScopeDefinition[],Abblix.Oidc.Server.Common.Constants.ResourceDefinition[],System.Security.Cryptography.X509Certificates.X509Certificate2,string).ClientCertificate}

The client X\.509 certificate presented at the token endpoint for
            mutual\-TLS client authentication \(RFC 8705\), when applicable; otherwise `null`\.

###### `ProofKeyThumbprint` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.Oidc.Server.Endpoints.Token.Interfaces.ValidTokenRequest.ValidTokenRequest(Abblix.Oidc.Server.Model.TokenRequest,Abblix.Oidc.Server.Endpoints.Token.Interfaces.AuthorizedGrant,Abblix.Oidc.Server.Features.ClientInformation.ClientInfo,Abblix.Oidc.Server.Common.Constants.ScopeDefinition[],Abblix.Oidc.Server.Common.Constants.ResourceDefinition[],System.Security.Cryptography.X509Certificates.X509Certificate2,string).ProofKeyThumbprint}

The RFC 7638 JWK thumbprint of the DPoP proof key bound to the
            request \(RFC 9449 §6\.1\), when the client presented a valid DPoP proof; otherwise `null`\.
### Properties

## ValidTokenRequest\.AuthorizedGrant Property {#Abblix.Oidc.Server.Endpoints.Token.Interfaces.ValidTokenRequest.AuthorizedGrant}

The authorized grant result which encapsulates the result of the authorization
            process\.

```csharp
public Abblix.Oidc.Server.Endpoints.Token.Interfaces.AuthorizedGrant AuthorizedGrant { get; init; }
```

#### Property Value
[AuthorizedGrant](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Token.Interfaces.AuthorizedGrant 'Abblix\.Oidc\.Server\.Endpoints\.Token\.Interfaces\.AuthorizedGrant')

## ValidTokenRequest\.ClientCertificate Property {#Abblix.Oidc.Server.Endpoints.Token.Interfaces.ValidTokenRequest.ClientCertificate}

The client X\.509 certificate presented at the token endpoint for
            mutual\-TLS client authentication \(RFC 8705\), when applicable; otherwise `null`\.

```csharp
public System.Security.Cryptography.X509Certificates.X509Certificate2? ClientCertificate { get; init; }
```

#### Property Value
[System\.Security\.Cryptography\.X509Certificates\.X509Certificate2](https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptography.x509certificates.x509certificate2 'System\.Security\.Cryptography\.X509Certificates\.X509Certificate2')

## ValidTokenRequest\.ClientInfo Property {#Abblix.Oidc.Server.Endpoints.Token.Interfaces.ValidTokenRequest.ClientInfo}

Information about the client making the token request, including client credentials and
            metadata\.

```csharp
public Abblix.Oidc.Server.Features.ClientInformation.ClientInfo ClientInfo { get; init; }
```

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

## ValidTokenRequest\.Model Property {#Abblix.Oidc.Server.Endpoints.Token.Interfaces.ValidTokenRequest.Model}

The token request model containing the information required to process the token request\.

```csharp
public Abblix.Oidc.Server.Model.TokenRequest Model { get; init; }
```

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

## ValidTokenRequest\.ProofKeyThumbprint Property {#Abblix.Oidc.Server.Endpoints.Token.Interfaces.ValidTokenRequest.ProofKeyThumbprint}

The RFC 7638 JWK thumbprint of the DPoP proof key bound to the
            request \(RFC 9449 §6\.1\), when the client presented a valid DPoP proof; otherwise `null`\.

```csharp
public string? ProofKeyThumbprint { get; init; }
```

#### Property Value
[System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String')

## ValidTokenRequest\.Resources Property {#Abblix.Oidc.Server.Endpoints.Token.Interfaces.ValidTokenRequest.Resources}

The resources associated with the token request,
            detailing the specific resources the client is requesting access to\.

```csharp
public Abblix.Oidc.Server.Common.Constants.ResourceDefinition[] Resources { get; init; }
```

#### Property Value
[ResourceDefinition](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.Constants.ResourceDefinition 'Abblix\.Oidc\.Server\.Common\.Constants\.ResourceDefinition')[\[\]](https://learn.microsoft.com/en-us/dotnet/api/system.array 'System\.Array')

## ValidTokenRequest\.Scope Property {#Abblix.Oidc.Server.Endpoints.Token.Interfaces.ValidTokenRequest.Scope}

The scopes associated with the token request, indicating the permissions
            requested by the client\.

```csharp
public Abblix.Oidc.Server.Common.Constants.ScopeDefinition[] Scope { get; init; }
```

#### Property Value
[ScopeDefinition](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.Constants.ScopeDefinition 'Abblix\.Oidc\.Server\.Common\.Constants\.ScopeDefinition')[\[\]](https://learn.microsoft.com/en-us/dotnet/api/system.array 'System\.Array')
