Skip to content

Per-product login sessions: one identity's session cannot serve several products on Thunder #43

Description

@kanushka

Problem

The shell's session model is one login per identity, with every product namespace deriving its access from that one session. Measured on ThunderID v1.0.0-beta (see #41), that model does not hold:

  • Thunder requires an RFC 8707 resource parameter on the authorization request.
  • It accepts only one"Only a single resource parameter is supported".

So a Thunder login session is pinned to exactly one resource server, and therefore to exactly one product audience, from the moment of authorization.

#41 ships Thunder support for single-product identities and refuses a Thunder identity that declares more than one product, which is a legible limit rather than a confusing runtime refusal. This issue covers lifting it.

Why this is not a surprise

docs/research/product-authentication-compatibility.md §1.5 already records "Per-product session multiplicity — one context needs several concurrent product sessions" as a required cross-cutting gap. #41 is the first hard evidence for it.

What it touches

  • The session model: a stored session is keyed by identity today; it would need to be keyed by identity and product.
  • The context schema: credentialRef is per identity and would need a per-product form.
  • wso2 login: one invocation currently establishes one session; it would need to establish, or lazily establish, one per product.
  • The broker: choosing which session answers a given namespace's request.

Backend ask, not filed upstream

Thunder supporting multiple resource parameters at authorization would remove the need for most of this. Owner: thunder-id/thunderid. Not filed there — recorded here so the ask has a home, matching how the compatibility research records backend asks with owners.

Notes

  • Asgardeo and Identity Server are unaffected: neither takes an audience at authorization time, so one session serves every product there. This is Thunder-specific and follows from a stricter, arguably better, audience model.
  • Related: Decide what the broker claims when a deployment cannot bind a token to one product #37, which asks what the shell should claim when a deployment cannot bind a token to one product. Thunder is the opposite case — it binds tightly and charges for it in session multiplicity.

Follows from #41.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type/New FeatureRepresents a request or task for a new featureneeds-triageMaintainer needs to evaluate this issue

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions