Udap.Tefca.Server
0.8.1
dotnet add package Udap.Tefca.Server --version 0.8.1
NuGet\Install-Package Udap.Tefca.Server -Version 0.8.1
<PackageReference Include="Udap.Tefca.Server" Version="0.8.1" />
<PackageVersion Include="Udap.Tefca.Server" Version="0.8.1" />
<PackageReference Include="Udap.Tefca.Server" />
paket add Udap.Tefca.Server --version 0.8.1
#r "nuget: Udap.Tefca.Server, 0.8.1"
#:package Udap.Tefca.Server@0.8.1
#addin nuget:?package=Udap.Tefca.Server&version=0.8.1
#tool nuget:?package=Udap.Tefca.Server&version=0.8.1
Udap.Tefca.Server
TEFCA community-specific validators for UDAP registration and token issuance, implementing the TEFCA SOP: Facilitated FHIR Implementation v2.0 requirements.
Setup
Register both the TEFCA model extensions and the validators:
// Register TEFCA authorization extension types (tefca_ias, etc.)
builder.Services.AddUdapTefcaExtensions();
// Register TEFCA community validators
builder.Services.AddUdapTefcaValidation(options =>
{
options.Communities.Add("tefca://test-community");
});
AddUdapTefcaExtensions() comes from the Udap.Tefca.Model package and registers TEFCA-specific authorization extension object types. Call it before AddUdapTefcaValidation().
The default community URI (tefca://tefca) is included automatically. Use the options delegate to add additional communities.
What it enforces
Token request validation
| Rule | client_credentials |
authorization_code |
|---|---|---|
| Required extensions | hl7-b2b |
none |
Allowed purpose_of_use |
12 TEFCA XP codes | 12 TEFCA XP codes |
Max purpose_of_use count |
1 | 1 |
| POU must match SAN URI | yes | yes |
IAS + client_creds requires tefca_ias |
yes | n/a |
The allowed purpose_of_use codes come from the TEFCA SOP: Exchange Purposes v4.0 (OID: 2.16.840.1.113883.3.7204.1.5.2.1):
T-TREAT, T-REQTREAT, T-HPO, T-PAY, T-COC, T-HEDIS, T-QMR, T-PH, T-ECR, T-ELR, T-IAS, T-GBD
Registration validation
At dynamic client registration time, TefcaRegistrationValidator validates that the client certificate's SAN URI contains a valid TEFCA Exchange Purpose code in the fragment (e.g., https://example.com/fhir#T-TREAT).
IAS conditional logic
When a client is registered with exchange purpose T-IAS and requests a client_credentials token, the tefca_ias authorization extension object must be present in the request (SOP v2.0 Section 6.11).
SSRAA vs TEFCA comparison
| Rule | SSRAA | TEFCA |
|---|---|---|
hl7-b2b required |
client_credentials only |
client_credentials only |
| Allowed POU codes | 62 (HL7 v3 full set) | 12 (TEFCA XP subset) |
| Max POU count | unlimited | 1 |
| POU must match SAN URI | no | yes |
| Registration validation | none | SAN URI XP code validation |
| IAS support | n/a | tefca_ias AEO required |
How it works
TefcaTokenValidator and TefcaRegistrationValidator implement ICommunityTokenValidator and ICommunityRegistrationValidator respectively. At runtime:
- Registration:
TefcaRegistrationValidatorchecks if the client's SAN URI contains a valid XP code fragment - Token request:
TefcaTokenValidatorreturns rules for the grant type, then validates that thepurpose_of_usein thehl7-b2bextension matches the registered SAN URI's XP code
See Udap.Server for the full auth server setup and the Udap.Auth.Server example for a working reference.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. 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. |
-
net10.0
- BouncyCastle.Cryptography (>= 2.6.2)
- Duende.IdentityModel (>= 8.1.0)
- Duende.IdentityServer (>= 7.4.7)
- Duende.IdentityServer.AspNetIdentity (>= 7.4.7)
- Duende.IdentityServer.EntityFramework.Storage (>= 7.4.7)
- Duende.IdentityServer.Storage (>= 7.4.7)
- Hl7.Fhir.Base (>= 5.13.3)
- Hl7.Fhir.R4B (>= 5.13.3)
- Hl7.Fhir.Specification.R4B (>= 5.13.3)
- Microsoft.AspNetCore.Authentication.OpenIdConnect (>= 10.0.8)
- Microsoft.AspNetCore.DataProtection.Abstractions (>= 10.0.8)
- Microsoft.AspNetCore.DataProtection.EntityFrameworkCore (>= 10.0.8)
- Microsoft.Bcl.Memory (>= 10.0.8)
- Microsoft.EntityFrameworkCore (>= 10.0.8)
- Microsoft.Extensions.Configuration (>= 10.0.8)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.8)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Http (>= 10.0.8)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Options (>= 10.0.8)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.8)
- Microsoft.IdentityModel.JsonWebTokens (>= 8.18.0)
- System.IdentityModel.Tokens.Jwt (>= 8.18.0)
- Udap.Server (>= 0.8.1)
- Udap.Tefca.Model (>= 0.8.1)
- ZiggyCreatures.FusionCache (>= 2.6.0)
-
net8.0
- BouncyCastle.Cryptography (>= 2.6.2)
- Duende.IdentityModel (>= 8.1.0)
- Duende.IdentityServer (>= 7.4.7)
- Duende.IdentityServer.AspNetIdentity (>= 7.4.7)
- Duende.IdentityServer.EntityFramework.Storage (>= 7.4.7)
- Duende.IdentityServer.Storage (>= 7.4.7)
- Hl7.Fhir.Base (>= 5.13.3)
- Hl7.Fhir.R4B (>= 5.13.3)
- Hl7.Fhir.Specification.R4B (>= 5.13.3)
- Microsoft.AspNetCore.Authentication.OpenIdConnect (>= 8.0.27)
- Microsoft.AspNetCore.DataProtection.Abstractions (>= 10.0.8)
- Microsoft.AspNetCore.DataProtection.EntityFrameworkCore (>= 8.0.27)
- Microsoft.Bcl.Memory (>= 10.0.8)
- Microsoft.EntityFrameworkCore (>= 9.0.16)
- Microsoft.Extensions.Configuration (>= 10.0.8)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.8)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Http (>= 10.0.8)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Options (>= 10.0.8)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.8)
- Microsoft.IdentityModel.JsonWebTokens (>= 8.18.0)
- System.IdentityModel.Tokens.Jwt (>= 8.18.0)
- Udap.Server (>= 0.8.1)
- Udap.Tefca.Model (>= 0.8.1)
- ZiggyCreatures.FusionCache (>= 2.6.0)
-
net9.0
- BouncyCastle.Cryptography (>= 2.6.2)
- Duende.IdentityModel (>= 8.1.0)
- Duende.IdentityServer (>= 7.4.7)
- Duende.IdentityServer.AspNetIdentity (>= 7.4.7)
- Duende.IdentityServer.EntityFramework.Storage (>= 7.4.7)
- Duende.IdentityServer.Storage (>= 7.4.7)
- Hl7.Fhir.Base (>= 5.13.3)
- Hl7.Fhir.R4B (>= 5.13.3)
- Hl7.Fhir.Specification.R4B (>= 5.13.3)
- Microsoft.AspNetCore.Authentication.OpenIdConnect (>= 9.0.16)
- Microsoft.AspNetCore.DataProtection.Abstractions (>= 10.0.8)
- Microsoft.AspNetCore.DataProtection.EntityFrameworkCore (>= 9.0.16)
- Microsoft.Bcl.Memory (>= 10.0.8)
- Microsoft.EntityFrameworkCore (>= 9.0.16)
- Microsoft.Extensions.Configuration (>= 10.0.8)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.8)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Http (>= 10.0.8)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.8)
- Microsoft.Extensions.Options (>= 10.0.8)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.8)
- Microsoft.IdentityModel.JsonWebTokens (>= 8.18.0)
- System.IdentityModel.Tokens.Jwt (>= 8.18.0)
- Udap.Server (>= 0.8.1)
- Udap.Tefca.Model (>= 0.8.1)
- ZiggyCreatures.FusionCache (>= 2.6.0)
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.8.1 | 38 | 5/20/2026 |
| 0.8.0 | 93 | 5/15/2026 |
| 0.7.13 | 85 | 5/15/2026 |
| 0.7.12 | 112 | 4/1/2026 |
| 0.7.11 | 97 | 3/31/2026 |
| 0.7.10 | 94 | 3/31/2026 |
| 0.7.9 | 99 | 3/31/2026 |
| 0.7.8 | 98 | 3/30/2026 |
| 0.7.7 | 94 | 3/30/2026 |
| 0.7.6 | 99 | 3/30/2026 |
| 0.7.5 | 98 | 3/30/2026 |
| 0.7.4 | 99 | 3/29/2026 |
| 0.7.3 | 102 | 3/29/2026 |
| 0.7.2 | 105 | 3/28/2026 |