8000 [OID4VCI] Support for ETSI Trust Lists · Issue #48106 · keycloak/keycloak · GitHub
[go: up one dir, main page]

Skip to content

[OID4VCI] Support for ETSI Trust Lists #48106

Open

Description

@dominikschlosser

Description

Add native ETSI trust list / LoTE support to Keycloak as part of broader EUDI Wallet support.

The immediate consumer is issuance. When Keycloak acts as an issuer in EUDI Wallet flows, it needs to establish trust in the wallet based on the EUDI trust model. In that model, this trust is not derived from a (statically configured) key alone. It is derived from ETSI trust lists and the trust anchors and semantics they provide.
That being said, it will also be needed when Keycloak implements the verification part.

A LoTE is a List of Trusted Entities. In ETSI TS 119 602, a LoTE is not just a list of certificates or public keys. It represents which entities are trusted, under which trust scheme, for which service scope, and with which status (expiry).

The EUDI ARF requires the issuer-side party to validate wallet-provided attestation using trust anchors from the relevant Wallet Provider LoTE. In other words: Keycloak, as issuer, needs to trust the wallet based on ETSI trust material. The reverse trust direction also exists, where the wallet validates the issuer side against separate trusted lists, but this is out of scope of this proposal (though might be very well relevant later on so other verifiers can actually trust credentials issued by Keycloak).

Value Proposition

  • Align Keycloak with the ARF trust model used in the EUDI Wallet ecosystem.
  • Support issuer-side EUDI flows against real trust infrastructure instead of only static key configuration.
  • Avoid duplicating ETSI trust-list handling across wallet-related features and extensions.
  • Provide a foundation that can later be reused for verification support as well.

Goals

  • Add native support for ETSI trust lists / LoTEs in Keycloak.
  • Support issuer-side trust decisions based on:
    • LoTE-Type/Scheme (for example .../LoTEType/EUWalletProvidersList)
    • service scope (for example http://uri.etsi.org/19602/SvcType/WalletSolution/Issuance)
    • the public keys in the correct scope
    • trust-list authenticity (signature of the trust list itself)
    • freshness / update handling (NextUpdate)
  • Make this usable first for issuer-side EUDI Wallet support.
  • Keep the design reusable for later verification-side support.

Non-Goals

Replace simple key- or certificate-based implementations where ETSI support is not needed.

Discussion

Keycloak OAuth-SIG

Notes

Possible Implementation Approach

Introduce a Trust Source SPI as an abstraction of different ways to establish trust. This was proposed by @dteleguin / @thomasdarimont in the OAuth-SIG.
It is notably another direction than the recent SPIFFE support, which relies on identity providers.

Trust List Example

A concrete example is the German sandbox environment, which publishes signed trust lists here:
https://bmi.usercontent.opencode.de/eudi-wallet/test-trust-lists/

References

Activity

  1. dominikschlosser commented on May 25, 2026

    @dominikschlosser
    ContributorAuthor

    #48869 should now allow to introduce an ETSI based version of a trust idp

  2. dominikschlosser commented on Aug 13, 2026

    @dominikschlosser
    ContributorAuthor

    I take this

  3. added
    area/oid4vcOpenID for Verifiable Credentials — OID4VCI, OID4VP, SD-JWT, mdoc/mdl
    status/labeled-by-botIssue type or area was assigned automatically by the triage bot
    on Oct 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/oid4vcOpenID for Verifiable Credentials — OID4VCI, OID4VP, SD-JWT, mdoc/mdlkind/enhancementCategorizes a PR related to an enhancementstatus/labeled-by-botIssue type or area was assigned automatically by the triage botstatus/triageteam/core-protocols

    Fields

    Value

    None yet

    Effort

    None yet

    Votes

    None yet

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    0