Skip to content

Client block: optional back-channel logout path for native Clients #460

Closed

Description

@ExtraToast

What to build

Chapter 17's client block gains an optional backChannelLogoutPath for native Clients: a path on the Client's host that receives an OpenID Connect back-channel logout token. The rendered Client object carries it as backChannelLogoutUri, built as https:// + host + the path, the same way redirectUris is built from redirectPaths.

When a person signs out of any app, or an Admin signs them out, the Identity Provider posts a logout token to every native Client the ended session signed into that declares this URI (identity ADR 0007). Without the field in the authoring format, no Application can opt in.

Contract on the identity side

The Client CRD already accepts backChannelLogoutUri (JorisJonkers-dev/identity, sign-out everywhere). Its CEL rules require:

  • only on signIn: native;
  • https:// on the Client's own host.

So the renderer needs no checks of its own beyond refusing the field on gated and token Clients, with an error code next to the existing E_CLIENT_* ones.

Acceptance criteria

  • backChannelLogoutPath is documented in the field table of spec/v1/17-sign-in.md, native only, optional.
  • The render maps it to backChannelLogoutUri on the Client object.
  • A gated or token Client that declares it is refused with a named error.

Blocked by

None (can start immediately).

Activity

  1. added
    type: featureNew user-facing or operator-facing capability.
    area: authAuthentication, authorization, sessions, or identity.
    component: configConfiguration schema, defaults, or repo settings.
    on Oct 16, 2026
  2. ExtraToast commented on Oct 29, 2026

    @ExtraToast
    ContributorAuthor

    Landed in #720. A native Client may now declare backChannelLogoutPath. It resolves to backChannelLogoutUri (https://, the exposure's host and the path) and renders on the Client object after redirectUris. On a gated or token Client the same field is E_CLIENT_FIELD_FOR_MODE, the existing code for a field outside its mode. The decision is recorded in 0140. It stays open until a live logout token reaches a declaring Client. No worked example declares the field yet.

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: authAuthentication, authorization, sessions, or identity.component: configConfiguration schema, defaults, or repo settings.type: featureNew user-facing or operator-facing capability.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions