chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-08-09: - USER-WP-0022-T01: progress → wait
This commit is contained in:
parent
1f25052d02
commit
b7378b7623
1 changed files with 133 additions and 0 deletions
|
|
@ -0,0 +1,133 @@
|
|||
---
|
||||
id: USER-WP-0022
|
||||
type: workplan
|
||||
title: "Public registration and JIT application profiles"
|
||||
domain: communication
|
||||
repo: user-engine
|
||||
status: active
|
||||
owner: codex
|
||||
topic_slug: netkingdom
|
||||
created: "2026-08-09"
|
||||
updated: "2026-08-09"
|
||||
depends_on:
|
||||
- USER-WP-0021
|
||||
- NK-WP-0025
|
||||
state_hub_workstream_id: "97145e5b-5f8f-4cb1-9135-2593f5baac8f"
|
||||
---
|
||||
|
||||
# USER-WP-0022 - public registration and application JIT
|
||||
|
||||
Turn the existing provider-neutral registration domain into a safe public
|
||||
product flow and provide idempotent first-login application-profile creation.
|
||||
user-engine remains the user/profile source of truth but delegates login
|
||||
identity creation to NetKingdom.
|
||||
|
||||
## T01 - Publish the public registration journey
|
||||
|
||||
```task
|
||||
id: USER-WP-0022-T01
|
||||
status: wait
|
||||
priority: high
|
||||
state_hub_task_id: "43dd49b7-6dbc-4117-a401-6d9f6e59aa26"
|
||||
```
|
||||
|
||||
Add accessible browser/API entry points for start, email verification,
|
||||
provider password-setup handoff, resume, expiry, cancel, and completion.
|
||||
Enable public registration only through explicit runtime configuration and
|
||||
signed allow-listed return context. Apply rate limits, anti-enumeration
|
||||
responses, CSRF, idempotency, and safe diagnostics.
|
||||
|
||||
Done when the flow can be enabled per deployment without exposing whether an
|
||||
email or username already exists.
|
||||
|
||||
Implementation contract established in NetKingdom at
|
||||
`docs/public-registration-orchestration-contract.md`. The current
|
||||
authenticated registration API will not be moved ahead of authentication;
|
||||
the public adapter will use opaque intent handles and construct a narrowly
|
||||
scoped applicant actor only from consumed verification evidence. First code
|
||||
slice added `RegistrationVerificationPort`, bound request/receipt/evidence
|
||||
types, and a fail-closed HTTP adapter with purpose checking and normalized
|
||||
mailbox evidence. Adapter tests and the full 123-test suite pass.
|
||||
|
||||
## T02 - Orchestrate provider identity creation
|
||||
|
||||
```task
|
||||
id: USER-WP-0022-T02
|
||||
status: progress
|
||||
priority: high
|
||||
state_hub_task_id: "74239ce4-5c1e-46cf-8abf-3cbec3f3f989"
|
||||
```
|
||||
|
||||
Use the existing provisioning port to create or resume an ordinary NetKingdom
|
||||
identity only after required verification. Persist lifecycle intent and outbox
|
||||
state atomically; compensate or surface recoverable partial state on provider
|
||||
failure. Never accept or retain an LLDAP password, admin credential, MFA seed,
|
||||
or verification secret in the user-engine domain.
|
||||
|
||||
Done when a registration can resume safely across timeout/retry and produces
|
||||
one external identity link.
|
||||
|
||||
The existing provisioning port remains the privileged boundary. Public
|
||||
registration adds canonical username and uses the registration ID as its
|
||||
stable idempotency key; it accepts only the baseline ordinary-user group and
|
||||
the provider-owned password-setup handoff. `ProvisioningRequest` now carries
|
||||
an optional canonical `preferred_username` through the HTTP adapter without
|
||||
changing existing callers.
|
||||
|
||||
## T03 - Create application profiles on first login
|
||||
|
||||
```task
|
||||
id: USER-WP-0022-T03
|
||||
status: cancel
|
||||
priority: high
|
||||
state_hub_task_id: "01fa1a22-0f4a-4a36-a9b3-0f94d3c70be1"
|
||||
```
|
||||
|
||||
Implement an idempotent ensure-application-profile operation keyed by
|
||||
application plus verified issuer and subject. Seed only approved profile
|
||||
defaults and preserve application ownership of application-specific data.
|
||||
Verified email may suggest an explicit link to an existing local profile but
|
||||
must never authorize an automatic takeover.
|
||||
|
||||
Done when repeated OIDC callbacks return the same profile and collisions
|
||||
require explicit authenticated resolution.
|
||||
|
||||
Cancelled here because application profiles are application-owned. The
|
||||
coulomb-social consumer implements this under CSOC-WP-0003 using its unique
|
||||
`(issuer, subject)` Member binding; user-engine continues to supply `/me`.
|
||||
|
||||
## T04 - Carry assurance and step-up requirements
|
||||
|
||||
```task
|
||||
id: USER-WP-0022-T04
|
||||
status: cancel
|
||||
priority: high
|
||||
state_hub_task_id: "d3bec8c6-e8d8-46d5-8fa2-b4675ff1ade8"
|
||||
```
|
||||
|
||||
Model the application's minimum assurance and per-user/profile step-up policy
|
||||
as data consumed by KeyCape/application authorization. Do not let profile data
|
||||
issue tokens or weaken client minimums. Add a reauthentication/step-up handoff
|
||||
that returns to the intended action after fresh OIDC authentication.
|
||||
|
||||
Done when a regular profile can be password-only while a profile or protected
|
||||
action can require MFA without changing global identity facts.
|
||||
|
||||
Cancelled here in favor of KEY-WP-0008 client policy and CSOC-WP-0003 action
|
||||
step-up. user-engine must not become the token assurance authority.
|
||||
|
||||
## T05 - Registration and JIT security matrix
|
||||
|
||||
```task
|
||||
id: USER-WP-0022-T05
|
||||
status: todo
|
||||
priority: high
|
||||
state_hub_task_id: "0a5a5f3a-0d47-4d5d-bda5-e2c7c737fee6"
|
||||
```
|
||||
|
||||
Cover enumeration resistance, duplicate username/email, verification
|
||||
replay/expiry, provider outage and compensation, return-state tampering, JIT
|
||||
replay, account-link collision, cross-tenant profile access, step-up downgrade,
|
||||
unlink, and deletion. Verify audit/outbox redaction and correlation.
|
||||
|
||||
Done when the full suite and deployed consumer conformance both pass.
|
||||
Loading…
Add table
Add a link
Reference in a new issue