Design: effective authorization context shape across DAW module/application boundaries #12
Labels
No labels
coordination/cross-repo
coordination/needed
effort
large
effort
medium
effort
small
meta/duplicate
meta/planning
meta/wontfix
priority
high
priority
low
priority
medium
session
blocker
session
handover
session
next
status
blocked
status
done
status
in-progress
status
review
status
to-go
type
admin
type
bug
type
config
type
deployment
type/design
type
docs
type
enhancement
type
feature
type
handover
type
infrastructure
type
installation
type
maintenance
type
migration
type
research
type
security
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
DAW/daw-contracts#12
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Define how an effective authorization context is represented and
passed across DAW module/application boundaries -- design only, no
schema, no implementation yet.
Why
Multiple consumers will need to enforce the same kind of boundary:
berhtjan-core (filtering discovered modules and composed fields, see
DAW/daw-modul-berhtjan-core#15), Anagild (query-level
visibility), MCP access, and applications such as Steurjan. If each of
these invents its own ctx.roles / ctx.permissions / ctx.scopes shape
independently, we end up with five incompatible authorization models
before any of them is actually validated against real use.
Starting point (session insight, finding-01)
The consequence for this issue: a consumer such as berhtjan-core
should only ever need to ask for the effective authorization for a
given object/field in a given usage context. It should not need to
know whether that effective authorization was derived from a role, a
group, an individual grant, a purpose/scope, or the calling
application. Roles are one possible input to that derivation, not the
shape of the contract itself.
Explicit non-goals for this issue
permissions (this issue does not assign that responsibility to
Steurjan or any other single application -- see discussion: an
application-owned model would become a wrong dependency once
Kaupapi, Anagild, Langan, MCP etc. need the same rules).
Scope
points (module-level, field-level) before proposing a shape.
enough real cases exist (this issue can stay open across several
DAW/daw-modul-berhtjan-core sessions while that happens).
(Anagild, MCP surfaces) so the shape isn't fitted to berhtjan-core
alone.
Acceptance criteria
(berhtjan-core's discovery/compose filtering)
sketched (not yet a numbered contract version)
roles
the permission model
Related
DAW/daw-modul-berhtjan-core#15 (first concrete consumer)