docs(access): describe acting context enforcement
This commit is contained in:
@@ -146,8 +146,11 @@ The backend foundation exposes these administration routes:
|
||||
- `/api/v1/admin/function-assignments`
|
||||
- `/api/v1/admin/function-delegations`
|
||||
|
||||
Dedicated WebUI management panels and explicit acting-in-place context
|
||||
selection are still follow-up work on top of these routes.
|
||||
Dedicated WebUI management panels remain follow-up work on top of these routes.
|
||||
Interactive acting-in-place selection is available through
|
||||
`/api/v1/auth/acting-contexts` and `/api/v1/auth/switch-acting-context`; it
|
||||
persists the exact selected assignment and represented account on the session,
|
||||
audits each switch, and fails closed when the assignment is no longer effective.
|
||||
|
||||
## Removed Compatibility Paths
|
||||
|
||||
|
||||
@@ -161,6 +161,10 @@ Implemented backend foundation:
|
||||
delegation identifiers when those facts exist.
|
||||
- The access manifest registers `access.semanticDirectory` and
|
||||
`access.explanation` capabilities.
|
||||
- Interactive sessions can list `/api/v1/auth/acting-contexts` and explicitly
|
||||
select or clear one with `/api/v1/auth/switch-acting-context`. Every switch is
|
||||
audited. API keys cannot select an acting context, and a stale, expired,
|
||||
revoked, or account-mismatched assignment fails closed.
|
||||
|
||||
Remaining rollout:
|
||||
|
||||
@@ -169,9 +173,6 @@ Remaining rollout:
|
||||
projection until migration is complete.
|
||||
2. Add dedicated WebUI management panels for identities, organization units,
|
||||
functions, assignments, and delegations.
|
||||
3. Add explicit acting-in-place context selection; `act_in_place` delegation
|
||||
facts are stored now but do not silently grant permissions without a selected
|
||||
acting context.
|
||||
4. Retrofit postbox, workflow, portal, and audit consumers to use identity,
|
||||
3. Retrofit postbox, workflow, portal, and audit consumers to use identity,
|
||||
organization, and access explanation capabilities rather than local access
|
||||
assumptions.
|
||||
|
||||
@@ -636,6 +636,7 @@ ACCESS_DOCUMENTATION: tuple[DocumentationTopic, ...] = (
|
||||
"Organizations owns the organization meta-model, concrete units, structures, and functions. IDM owns the fact that an identity, through one of its accounts, holds a function in an organization unit, including delegated and acting-for assignments. "
|
||||
"Access consumes those accepted IDM facts through the directory capability, validates function identifiers against Organizations, and turns them into rights only when an explicit external function role mapping connects the organization function ID to an assignable tenant role. "
|
||||
"The assignment itself does not grant rights. Removing the IDM assignment, disabling the Organizations function, or removing the Access mapping stops the derived role source from contributing effective permissions. "
|
||||
"A delegated assignment contributes under the delegate's own account. An acting-for assignment contributes only after an interactive session selects that exact current assignment; Access retains both the real and represented account, audits context changes, and rejects stale or mismatched selections. "
|
||||
"Tenant administrators inspect this from the user access explanation dialog: role sources link back to the Organizations function or unit that defines the fact and to the IDM assignment that produced it. "
|
||||
"The same explanation is exposed by the admin API, while mapping management remains under Admin > Function role mappings. This keeps the audit trail clear: Organizations records what can exist, IDM records who holds it, and Access records which accepted facts produce permissions."
|
||||
),
|
||||
@@ -655,6 +656,7 @@ ACCESS_DOCUMENTATION: tuple[DocumentationTopic, ...] = (
|
||||
DocumentationLink(label="Effective user access explanation API", href="/api/v1/admin/users/{user_id}/access-explanation", kind="api"),
|
||||
DocumentationLink(label="Organizations functions", href="/organizations?section=functions", kind="runtime"),
|
||||
DocumentationLink(label="IDM assignments", href="/idm", kind="runtime"),
|
||||
DocumentationLink(label="Acting contexts API", href="/api/v1/auth/acting-contexts", kind="api"),
|
||||
),
|
||||
metadata={
|
||||
"kind": "reference",
|
||||
@@ -666,6 +668,7 @@ ACCESS_DOCUMENTATION: tuple[DocumentationTopic, ...] = (
|
||||
"api_path": "/api/v1/admin/external-function-role-mappings",
|
||||
"explanation_api_path": "/api/v1/admin/users/{user_id}/access-explanation",
|
||||
"runtime_routes": ["/admin?section=tenant-function-role-mappings", "/organizations?section=functions", "/idm"],
|
||||
"acting_context_api_paths": ["/api/v1/auth/acting-contexts", "/api/v1/auth/switch-acting-context"],
|
||||
"permission_scopes": ["access:function:write", "access:role:assign"],
|
||||
"responsibility_boundaries": {
|
||||
"organizations": "Defines organization units, structures, function types, and functions.",
|
||||
|
||||
Reference in New Issue
Block a user