AAuth.R3 0.10.0-alpha.1

This is a prerelease version of AAuth.R3.
dotnet add package AAuth.R3 --version 0.10.0-alpha.1
                    
NuGet\Install-Package AAuth.R3 -Version 0.10.0-alpha.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="AAuth.R3" Version="0.10.0-alpha.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="AAuth.R3" Version="0.10.0-alpha.1" />
                    
Directory.Packages.props
<PackageReference Include="AAuth.R3" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add AAuth.R3 --version 0.10.0-alpha.1
                    
#r "nuget: AAuth.R3, 0.10.0-alpha.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package AAuth.R3@0.10.0-alpha.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=AAuth.R3&version=0.10.0-alpha.1&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=AAuth.R3&version=0.10.0-alpha.1&prerelease
                    
Install as a Cake Tool

AAuth.R3 preview

Experimental helpers for AAuth Rich Resource Requests (R3) — resource-declared, vocabulary-based authorization layered on the AAuth protocol. Resources publish content-addressed R3 documents describing what a class of access means; tokens carry r3_uri, r3_s256, r3_granted, and r3_conditional alongside opaque scopes.

Preview. R3 is an IETF Exploratory Draft (draft-hardt-aauth-r3). This package ships separately from AAuth and may change with the draft. It tracks the AAuth package version.

Current target: R3 draft-01 from the protocol draft-10 snapshot, alongside Signature Keys draft-08. Supported vocabulary models do not imply native protocol hosting; runnable integrations use OpenAPI, OpenAPI Gateway and AsyncAPI.

What's inside

  • R3 models for all eight standard vocabularies: MCP, OpenAPI, OpenAPI Gateway, gRPC, GraphQL, AsyncAPI, WSDL, and OData. Required and optional members are validated against the selected vocabulary. R3VocabularySchemas admits third-party URI schemas explicitly per consumer, without global registration.
  • Content addressing (R3Hash) — SHA-256 over the verbatim served bytes, base64url (no canonicalization).
  • Claim helpers (R3AuthClaims, R3ClaimReader) that ride the core token builders' AdditionalClaims seam.
  • Server helpers: designated-AS document readership, signed fetch and hash verification, per-call proposal enforcement, and mandatory audit persistence.

Qualified identity

var operation = new R3OperationIdentity(Vocabulary.OpenApiGateway,
    R3Operation.OpenApiGateway("calendar", "createEvent"));
var granted = new R3Grant
{
    Vocabulary = Vocabulary.OpenApiGateway,
    Operations = [operation.Operation],
};
bool authorized = granted.Contains(operation);

Identity includes the vocabulary, member names, service qualifier, and optional members. An omitted optional member is not a wildcard. OData method-array order does not change identity. R3Metadata.ValidateOperations checks an operation against advertised discovery and a resource-supplied authoritative definition; it does not fetch or parse arbitrary API definitions on the resource's behalf. Gateway discovery uses a JSON service-label-to-OpenAPI-URL map.

Issuance and storage

R3AccessTokenEndpointOptions.AuditSink is required. There is no no-op sink. Completion must mean the token identity/hash and audit provenance are committed before release. InMemoryR3AuditSink is explicitly non-durable and intended for tests. The R3 sample uses Microsoft.Data.Sqlite 10.0.11 with a transaction joining issuance and audit rows; bearer token text is not persisted. A post-commit delivery failure may leave an audited but undelivered token, never an unaudited release. Pending browser consent remains volatile. R3ProposalStore retains exact document and proposal bytes for its process lifetime, including after consent completes; an unexpired grant must not lose its approved proposal after ten minutes. Its maxEntries capacity defaults to 1024 distinct hashes. Duplicate content reuses its entry; new content at capacity fails before a reference is published, without evicting existing references. The store is not restart-durable. Restart requires a new authorization request; production document and audit retention requires durable hosting beyond this in-memory sample store.

IsConditionalOperation and IsOperationAllowed receive a qualified identity. IsProposalAllowed can evaluate concrete parameters. Resource scopes, when present, also require IsScopeAllowed(resourceIssuer, scope) approval and are retained independently of R3 grants. Account identifiers must match the resource token, document/proposal, auth token, and requested resource account.

Reader and transport policy

R3DocumentReaderPolicy defaults to the designated AS using aauth-access.json. Explicit PS evaluators must use aauth-person.json. PS evaluation is the logged Q4 interpretation of conflicting draft readership clauses, not an unconditional PS entitlement. Agent requests are rejected.

Custom FetchAndVerifyAsync callbacks require FetchTransportContract. The SDK still validates the URL, deadline, response size, and hash of returned bytes. Network callbacks must enforce DNS/connected-address admission and redirect policy; InProcessOnly must never be used for a network callback. Hashes always cover exact served bytes, including bytes returned from caches.

Events handoff

R3Operation.AsyncApi(operationId, "receive") models a subscription grant. The AAuth.Events companion and shared EventSupport sample implement the authenticated ticket response, subscribe token, registration and event delivery. Both primary apps expose public/protected /events flows. R3 vocabulary support alone does not provide an AP transport or durable receipt store.

Status

Preview. The AAuth samples show a runnable end-to-end R3 flow (the Bookings resource, guarded by a dedicated R3 Access Server, using the OpenAPI vocabulary) and a Catalog Gateway with service-qualified grants and sibling-service rejection.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • AAuth (>= 0.10.0-alpha.1)

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.10.0-alpha.1 49 9/10/2026
0.8.0-alpha.4 100 7/3/2026