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

## ProofError Class

Describes why a DPoP proof was rejected\. [Reason](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.DPoP.ProofError#Abblix.Oidc.Server.Features.DPoP.ProofError.Reason 'Abblix\.Oidc\.Server\.Features\.DPoP\.ProofError\.Reason') is a stable token suitable for log filters and
metric labels; [Detail](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.DPoP.ProofError#Abblix.Oidc.Server.Features.DPoP.ProofError.Detail 'Abblix\.Oidc\.Server\.Features\.DPoP\.ProofError\.Detail') is a human\-readable hint that MUST NOT contain attacker\-controllable input
verbatim, since this string can surface in error responses and operator dashboards\.

```csharp
public sealed record ProofError : System.IEquatable<Abblix.Oidc.Server.Features.DPoP.ProofError>
```

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

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

## ProofError\(string, string\) Constructor {#Abblix.Oidc.Server.Features.DPoP.ProofError.ProofError(string,string)}

Describes why a DPoP proof was rejected\. [Reason](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.DPoP.ProofError#Abblix.Oidc.Server.Features.DPoP.ProofError.Reason 'Abblix\.Oidc\.Server\.Features\.DPoP\.ProofError\.Reason') is a stable token suitable for log filters and
metric labels; [Detail](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.DPoP.ProofError#Abblix.Oidc.Server.Features.DPoP.ProofError.Detail 'Abblix\.Oidc\.Server\.Features\.DPoP\.ProofError\.Detail') is a human\-readable hint that MUST NOT contain attacker\-controllable input
verbatim, since this string can surface in error responses and operator dashboards\.

```csharp
public ProofError(string Reason, string? Detail=null);
```
#### Parameters

###### `Reason` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.Oidc.Server.Features.DPoP.ProofError.ProofError(string,string).Reason}

A stable, machine\-friendly token \(e\.g\. `invalid_typ`,
            `signature_invalid`, `htm_mismatch`\)\.

###### `Detail` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.Oidc.Server.Features.DPoP.ProofError.ProofError(string,string).Detail}

Optional human\-readable diagnostic\.
### Properties

## ProofError\.Detail Property {#Abblix.Oidc.Server.Features.DPoP.ProofError.Detail}

Optional human\-readable diagnostic\.

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

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

## ProofError\.Reason Property {#Abblix.Oidc.Server.Features.DPoP.ProofError.Reason}

A stable, machine\-friendly token \(e\.g\. `invalid_typ`,
            `signature_invalid`, `htm_mismatch`\)\.

```csharp
public string Reason { get; init; }
```

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