Skip to main content
net10.0

IdentityServer adapter for Duende ConformanceReport assessment

Published
Sep 5, 2026
1mo ago
Total Downloads
2.0K
1,997

Install

dotnet add package Duende.Labs.IdentityServer.ConformanceReport --version 2026.905.51
ProductVersions
.NET
net10.0

README

Duende.Labs.IdentityServer.ConformanceReport

This is an experimental Duende Labs package. It is provided for exploration and feedback only: it is not supported, may change or be discontinued at any time without notice, and must not be used in production.

OAuth 2.1 and FAPI 2.0 Security Profile conformance assessment for Duende IdentityServer.

Overview

Duende.IdentityServer.ConformanceReport adds conformance assessment to your IdentityServer application. It evaluates your server and client configuration against OAuth 2.1 and FAPI 2.0 Security Profile requirements and generates an HTML report accessible via a protected endpoint.

Installation

dotnet add package Duende.IdentityServer.ConformanceReport

Setup

1. Add to your IdentityServer configuration

builder.Services
    .AddIdentityServer()
    .AddInMemoryClients(clients)
    .AddConformanceReport(options =>
    {
        options.Enabled = true;
        options.EnableOAuth21Assessment = true;
        options.EnableFapi2SecurityAssessment = true;

        // Authorization is configured automatically - requires authenticated user by default
        // Customize as needed:
        options.ConfigureAuthorization = policy => policy
            .RequireRole("Administrator")
            .RequireClaim("department", "Compliance");
    });

2. Map the endpoint

app.MapConformanceReport();

3. Access the report

Navigate to: https://your-server/_duende/conformance-report

Configuration Options

Property Type Default Description
Enabled bool false Enable/disable conformance endpoints
EnableOAuth21Assessment bool true Enable OAuth 2.1 profile assessment
EnableFapi2SecurityAssessment bool true Enable FAPI 2.0 Security Profile assessment
PathPrefix string "_duende" Path prefix for conformance endpoints (without leading slash)
ConfigureAuthorization Action<AuthorizationPolicyBuilder>? Requires authenticated user Configure authorization policy for the HTML report endpoint
AuthorizationPolicyName string "ConformanceReport" ASP.NET Core authorization policy name (used internally)
HostCompanyName string? null Optional display name of the host company to include in the report
HostCompanyLogoUrl Uri? null Optional URL of the host company's logo

Authorization Examples

Default (requires authenticated user):

options.Enabled = true;
// ConfigureAuthorization defaults to requiring authenticated user

Require specific role:

options.ConfigureAuthorization = policy => policy.RequireRole("Admin");

Require multiple conditions:

options.ConfigureAuthorization = policy => policy
    .RequireRole("Admin")
    .RequireClaim("department", "IT");

Allow anonymous (for development/testing only):

options.ConfigureAuthorization = policy =>
    policy.RequireAssertion(_ => builder.Environment.IsDevelopment());

Manual policy registration (advanced scenarios):

// In AddConformanceReport:
options.ConfigureAuthorization = null; // Skip automatic registration

// Then manually register the policy:
builder.Services.AddAuthorization(options =>
{
    options.AddPolicy("ConformanceReport", policy =>
    {
        policy.Requirements.Add(new MyCustomRequirement());
    });
});

Important: If you set ConfigureAuthorization = null, you must manually register a policy with the name specified in AuthorizationPolicyName (default: "ConformanceReport"). Otherwise, the endpoint will fail at runtime with a "policy not found" error.

Understanding the Report

The HTML report displays:

  • Server Configuration: Matrix showing server-level conformance rules
  • Client Configurations: Matrix showing per-client conformance rules
  • Rule Legend: Explanation of each rule ID
  • Notes: Detailed messages for warnings and failures

Status Indicators

Symbol Meaning
Pass Requirement met
Fail Requirement not met (non-conformant)
Warning Recommended practice not followed
N/A Rule not applicable

Licensing

Duende IdentityServer is source-available, but requires a paid license for production use.

  • Development and Testing: You are free to use and explore the code for development, testing, or personal projects without a license.
  • Production: A license is required for production environments.
  • Free Community Edition: A free Community Edition license is available for qualifying companies and non-profit organizations. Learn more here.

Reporting Issues and Getting Support

Changes from Previous Version

No structural changes between v2026.903.50 and v2026.905.51.

Adoption Assessment

A verified publisher signal is available. Assess fit from the package's supported frameworks, license and dependency graph rather than popularity alone.

No SPDX license expression is published. Review the license text and your organisation's policy before redistribution.Compatibility metadata lists 1 target framework; confirm the exact target used by your application.

Related Guides & Workflows

Learn how to evaluate, integrate, or audit this package in your .NET project.