Skip to main content

Issuer Concepts & Architecture

This document provides a conceptual introduction to the SIROS ID Issuer, explaining key concepts, components, and deployment models. For hands-on configuration, see Issuing Credentials.

Wallet Interoperability​

The SIROS ID Issuer is designed to work with any standards-compliant digital wallet—not just the SIROS ID Credential Manager. Any wallet implementing the OID4VCI specification with supported credential formats can receive credentials from a SIROS ID Issuer.

Compatible wallets include:

  • SIROS ID Credential Manager (based on wwWallet) – used in examples throughout this documentation
  • EUDI Reference Wallet – the EU Digital Identity reference implementation
  • Native mobile wallets – iOS and Android applications with OID4VCI support
  • Third-party wallets – any wallet implementing OID4VCI and supported formats (SD-JWT VC, mDL/mdoc, W3C VC 2.0)
Multi-Wallet Support

A single issuer deployment can issue credentials to multiple different wallet implementations. The OID4VCI protocol ensures consistent behavior across all compliant wallets.

What is a Credential Issuer?​

A credential issuer is a service that creates digitally signed credentials and delivers them to user wallets. The issuer acts as a bridge between your existing identity infrastructure and the emerging world of verifiable credentials.

The issuer:

  • Authenticates users via existing identity providers (SAML, OIDC) or API-based flows
  • Collects claims from your authoritative sources (via IdP or direct API integration)
  • Constructs credentials following standardized schemas
  • Signs credentials using cryptographic keys
  • Delivers credentials to user wallets via OID4VCI protocol

Integration Patterns​

The SIROS ID Issuer supports two main integration patterns:

PatternBest ForDocumentation
IAM-CentricExisting IdPs, SSO, federationSAML IdP, OIDC Provider
API-CentricBackend systems, batch issuance, pre-authorized flowsAPI Integration

IAM-Centric Integration​

Users authenticate via your identity provider (SAML or OIDC), and the issuer constructs credentials from the identity claims. This is the traditional model for organizations with established IdP infrastructure.

API-Centric Integration​

Authentic sources (HR systems, registries, databases) push document data via REST/gRPC APIs. Users collect credentials using pre-authorized codes without additional authentication. This is ideal for:

  • Batch issuance: Provisioning credentials for many users at once
  • Non-IAM workflows: Where identity is established outside the IdP
  • Authentic source systems: Direct integration with authoritative data

Core Concepts​

Verifiable Credentials​

A verifiable credential is a tamper-evident digital document that makes claims about a subject (typically a person). Like a physical credential (passport, ID card, diploma), it contains:

ComponentDescriptionExample
IssuerWho issued the credentialhttps://issuer.example.org
SubjectWho the credential is aboutThe holder's identifier
ClaimsStatements about the subjectName, birth date, etc.
ProofCryptographic signatureDigital signature + public key
ValidityWhen the credential is validIssue date, expiration

Credential Formats​

The SIROS ID Issuer supports multiple credential formats to meet different use cases:

FormatStandardBest ForSelective Disclosure
SD-JWT VCIETF SD-JWT VCEU Digital Identity, general use✅ Yes
mDL/mDocISO 18013-5Mobile driving licenses✅ Yes
W3C VC 2.0 (ldp_vc)W3C VC Data Model 2.0 with Data Integrity proofsLinked-data ecosystemsDepends on cryptosuite
JWP (blind BBS)IETF JSON Web ProofUnlinkable presentations✅ Yes
Recommended Format

SD-JWT VC is the recommended format for new deployments. It provides selective disclosure (users can share only necessary claims) and is the format specified by the EU Digital Identity Wallet Architecture Reference Framework (ARF).

Credential Types​

A credential type defines the schema and semantics of a credential. Each type specifies:

  • VCT (Verifiable Credential Type): A unique identifier (URN or URL)
  • Claims: What information the credential contains
  • Display: How to present the credential in wallets
  • Trust framework: Which authorities can issue it

VCTM (Verifiable Credential Type Metadata)​

Each credential type is defined by a VCTM file that specifies:

{
"vct": "urn:eudi:pid:1",
"name": "Person Identification Data",
"description": "EU Person Identification Data credential",
"display": [
{
"lang": "en-US",
"name": "PID",
"rendering": {
"svg_templates": [...]
}
}
],
"claims": [
{
"path": ["given_name"],
"mandatory": true,
"sd": "always",
"display": [{"lang": "en-US", "label": "First name"}]
}
]
}

Shipped Credential Types​

The vc repository metadata/ directory ships type metadata for common types, which you reference from common.credential_metadata:

TypeVCT / doctypeFile
PIDurn:eudi:pid:1vctm_pid.json
EHICurn:eudi:ehic:1vctm_ehic.json
PDA1urn:eudi:pda1:1vctm_pda1.json
Diplomaurn:eudi:diploma:1vctm_diploma.json
ELMurn:eudi:elm:1vctm_elm.json
Microcredentialurn:eudi:micro_credential:1vctm_microcredential.json
eduIDurn:credential:eduid:1vctm_eduid.json
PID (mdoc)eu.europa.ec.eudi.pid.1pid_mdoc.mdoc.json
mDL (mdoc)org.iso.18013.5.1.mDLmdl.mdoc.json

Which schema a scope uses is determined by the VCTM (or MDDL) file it points at in common.credential_metadata.

Building the Claim Set​

Turning authenticated user data into credential claims takes three pieces of configuration:

  1. common.credential_metadata.<scope> declares the credential type — which VCTM (or MDDL, for mdoc) describes it, and which format to issue.
  2. apigw.data_sources.<category>.scopes.<scope> says where the data comes from and which auth provider identifies the user.
  3. apigw.auth_providers.<provider>.attribute_mapping normalises the provider's own attribute names to canonical claim names, with optional defaults. Mapping is a rename-and-presence step only; value transformations are derivations on the scope (see below).

APIGW then validates the resulting claim set against the VCTM schema before sending it to the issuer for signing.

common:
credential_metadata:
pid:
vctm_file_path: "/metadata/vctm_pid.json"
format: "dc+sd-jwt"

apigw:
auth_providers:
saml:
enable: true
# Map SAML attribute OIDs onto canonical claim names
attribute_mapping:
"urn:oid:2.5.4.42":
claim: "given_name"
required: true
"urn:oid:2.5.4.4":
claim: "family_name"
required: true
"urn:oid:0.9.2342.19200300.100.1.3":
claim: "email_address"

data_sources:
# The SAML assertion's claims ARE the credential data
assertion:
scopes:
pid:
auth_provider: saml
# Value transformations are derivations on the scope
derivations:
- lowercase:
input: email_address

default: supplies a value when the attribute is absent, and as_array: true wraps a scalar in a single-element array. Available derivation primitives are age_over_thresholds, lowercase, uppercase, trim, country_alpha2, country_alpha3, yyyymmdd_to_iso, swamid_highest_assurance_level and random. Derivations are supported on datastore, assertion, external_api and presentation scopes; each takes an input claim name and, where applicable, an output (default: in place). See the VC Configuration Reference for each primitive's parameters.

Removed configuration

Earlier releases had a top-level credential_constructor section. It no longer exists — use the three sections above instead.

Issuer Components​

The SIROS ID Issuer is built as a modular system with distinct components:

Component Descriptions​

ComponentPurposeProtocol/Standard
HTTP ServerExposes OID4VCI endpointsOpenID4VCI
SAML SPService Provider for SAML federationsSAML 2.0
OIDC RPRelying Party for OIDC providersOpenID Connect
Session ManagerOAuth2 session and state managementOAuth 2.0
Issuer APICore credential operations (called by apigw; the REST datastore API is served by apigw)gRPC
Credential ConstructorBuilds credentials from claimsInternal
Signing ServiceCryptographic signing (SW or HSM)JWS, COSE
Status ListsRevocation status trackingToken Status List
Audit LogCompliance and monitoringInternal

Service Architecture​

The issuer runs as three separate services (apigw, issuer and registry, each its own binary and container image) that talk gRPC to each other and share a MongoDB:

All three can run on one host (for example with Docker Compose, see Deployment) or be scaled independently for high availability.

Deployment Models​

Choose a deployment model based on your requirements:

Model 1: SIROS ID Hosted (SaaS)​

Use the SIROS ID cloud platform with minimal configuration.

AspectDetails
SetupMinutes – configure via SIROS ID portal
MaintenanceFully managed by SIROS
Data locationSIROS ID cloud infrastructure
CustomizationCredential types, branding
Best forQuick deployment, SaaS model

Model 2: Self-Hosted (On-Premise)​

Deploy the full issuer stack in your own infrastructure.

AspectDetails
SetupHours to days – deploy containers/VMs
MaintenanceYour operations team
Data locationYour infrastructure
CustomizationFull control over all components
Best forData sovereignty, compliance, custom integrations

Model 3: Hybrid​

Combine hosted and self-hosted components.

AspectDetails
SetupVariable
MaintenanceShared responsibility
Data locationCredentials on-premise, trust in cloud
CustomizationSelective control
Best forRegulated environments with external trust requirements

Model 4: Standalone Issuer​

Minimal single-host deployment for testing or air-gapped environments: the same three services and MongoDB, run together on one machine.

AspectDetails
SetupMinutes – one Docker Compose file
MaintenanceMinimal
Data locationLocal
CustomizationDevelopment/testing
Best forDevelopment, demos, isolated testing

Deployment Decision Matrix​

RequirementHostedSelf-HostedHybridStandalone
Quick setup✅❌⚠️✅
Data sovereignty✅✅✅✅
HSM key storage✅✅✅❌
Custom trust✅✅✅❌
High availability✅⚠️⚠️❌
Zero maintenance✅❌⚠️✅
GDPR compliance✅✅✅✅
EU/EES Hosting

All SIROS ID hosted services are operated from EU/EES infrastructure, ensuring data sovereignty and GDPR compliance for European customers.

Legend: ✅ Excellent | ⚠️ Possible with effort | ❌ Not recommended

Security Considerations​

Key Management​

The issuer's signing keys are the most critical security asset. Choose the appropriate key storage based on your security requirements:

Key StorageInterfaceSecurity LevelUse Case
Software KeysEncrypted fileDevelopmentLocal testing, demos
HSMPKCS#11ProductionStandard production deployments
Certified HSMPKCS#11 (QSCD)High AssuranceeIDAS qualified signatures, government issuers

Trust Chain​

Credentials are only valuable if verifiers can trust them:

See Trust Services for configuring trust frameworks.

Next Steps​

Now that you understand the concepts:

  1. Issuing Credentials – Configure and deploy your issuer
  2. SAML IdP Integration – Connect SAML federations
  3. OIDC Provider Integration – Connect OIDC providers
  4. Trust Services – Configure trust frameworks