[Design Discussion] Session visibility - list live SSO sessions per user and per application #4130
Replies: 2 comments
|
Thanks for writing this up, I want to highlight 2 main concerns in the proposal. 1. The listing payload cannot identify a sessionThe stated response shape is "identifiers, timestamps, participants, resolved display names". That is everything except what a human uses to recognise a session. Asked "is this you?", nobody can answer from a session id and a pair of timestamps. A "your devices / active sessions" view needs the what and the where, and none of it is stored today: The split that matters is between what has to be captured when the session is established and what can be worked out at render time. Must be captured at establishment, because it is request-time only and unrecoverable afterwards:
Derivable at display time, so should not be stored:
2. What is the session identifier in the response?"Identifiers" in the response shape needs pinning down. The design is right that the handle is never serialized: it is the browser credential, and putting it in a response body, a URL, or a DOM attribute would hand out the thing that is the session. That has to hold. But the rows still need a stable identity that is safe to expose. |
|
Thank you for the feedback @madurangasiriwardena, both points make sense. I will update |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Related Feature Issue
#3400
Problem Summary
ThunderID persists SSO sessions (flow-centric browser SSO) but gives administrators and
end users no way to see them. Without a read path, operators cannot answer basic security
questions such as "where is this user signed in" or "who has live sessions on this
application". Session visibility is the foundation of the session management epic (#3394);
this design covers the read path proposed in #3400.
High-Level Approach
for administrators, and GET /sessions/me for the authenticated caller.
session checkpoint nodes to the Default Authentication Flow in the bootstrap resources.
response, so clients need no extra list permissions and no follow-up requests.
participating applications) and on the application edit page (sessions with the user).
Architecture Overview
Components:
following the flow/mgt and design/theme/mgt conventions. It calls a ManagementService in
the session package backed by read-only queries over the existing SSO_SESSION and
SSO_SESSION_PARTICIPANT tables in the operation database.
against a caller-supplied reference time) with server-side pagination (limit clamped to
the server maximum, offset, totalResults and links). One new index
(APP_ID, DEPLOYMENT_ID) is added to both the PostgreSQL and SQLite scripts to support
the per-application listing.
application IDs to application names at response-build time, deduplicated per page.
server-driven pagination, DataGrid-based SessionsTable) consumed by the Console
application edit page and the configure-users user edit page.
flow definitions are versioned, so existing deployments pick the change up as a new
flow version on the next bootstrap.
Security Considerations
derives the subject from the authenticated token and returns only the caller's sessions.
display names). The session handle used as the browser credential is never serialized.
result sets.
viewer does not need user-list or application-list permissions, and no additional data
beyond names is disclosed.
Impacted Areas
Alternatives Considered
Alternative 1: Resolve user and application names client-side in the Console by
fetching the user and application lists.
default page size, and requires viewers to hold extra list permissions.
Alternative 2: Keep session recording Console-only (status quo) and ship the UI as is.
which reads as a broken feature.
record sessions.
Alternative 3: Expose management reads from the runtime session store interface.
theme management are structured.
Questions for Community Input
catalog so system:session:view becomes assignable to scoped roles? Today only the
blanket system permission covers it, matching the existing agenttype pattern.
Preference on scope: administrator revocation first, or self-service alongside?
disappears before the checkpoint load (pre-existing behavior, see SessionExecutor fails the whole flow when a resolved session vanishes before checkpoint load #4137). Should
graceful fallback to the credential prompt live in the executor or the engine?
follow-up?
All reactions