Enable public registration and prove event delivery
This commit is contained in:
parent
8070dd4b14
commit
c56465e32d
3 changed files with 54 additions and 5 deletions
|
|
@ -45,7 +45,7 @@ spec:
|
|||
seccompProfile: {type: RuntimeDefault}
|
||||
containers:
|
||||
- name: portal
|
||||
image: forgejo.coulomb.social/coulomb/user-engine@sha256:4eac10bf157e48eeadef16a2da83a00933914c9d37338f01679692008de21565
|
||||
image: forgejo.coulomb.social/coulomb/user-engine@sha256:1402712e8f3ddc1397e83edb9627251b0ea362f1e3308d252d0d688ac589556e
|
||||
imagePullPolicy: IfNotPresent
|
||||
ports: [{name: http, containerPort: 8080}]
|
||||
env:
|
||||
|
|
@ -70,7 +70,14 @@ spec:
|
|||
- name: USER_ENGINE_MAIL_TOKEN
|
||||
valueFrom:
|
||||
secretKeyRef: {name: user-engine-delivery, key: mail-token}
|
||||
- {name: USER_ENGINE_PUBLIC_REGISTRATION, value: "false"}
|
||||
- {name: USER_ENGINE_PUBLIC_REGISTRATION, value: "true"}
|
||||
- {name: USER_ENGINE_REGISTRATION_VERIFICATION_URL, value: "http://email-connect.email-connect.svc.cluster.local:8080"}
|
||||
- name: USER_ENGINE_REGISTRATION_VERIFICATION_TOKEN
|
||||
valueFrom:
|
||||
secretKeyRef: {name: user-engine-delivery, key: mail-token}
|
||||
- {name: USER_ENGINE_REGISTRATION_CLIENTS, value: "coulomb-social"}
|
||||
- {name: USER_ENGINE_REGISTRATION_TENANTS, value: "tenant:coulomb"}
|
||||
- {name: USER_ENGINE_REGISTRATION_PASSWORD_SETUP_ORIGINS, value: "https://kc.coulomb.social"}
|
||||
- {name: USER_ENGINE_REGISTRATION_RATE_LIMIT, value: "10"}
|
||||
- {name: USER_ENGINE_REGISTRATION_RATE_WINDOW_SECONDS, value: "60"}
|
||||
- {name: USER_ENGINE_PROVISIONING_URL, value: "http://identity-provisioner.sso.svc.cluster.local:8080"}
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ gate; provider implementation status stays authoritative in the owning repos.
|
|||
|
||||
```task
|
||||
id: NK-WP-0024-T01
|
||||
status: progress
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "7dff0ac6-c5eb-486c-83db-a1400f30f77d"
|
||||
```
|
||||
|
|
@ -75,6 +75,12 @@ validated user-engine policy package currently exists on railiance01.
|
|||
probe produced self-service allow and cross-tenant deny decisions. The portal
|
||||
runtime switch remains coupled to the event/mail activation gate below.
|
||||
|
||||
Done 2026-08-14: the portal is live on the fail-closed HTTP adapter; its
|
||||
platform outbox dispatch was authorized by the deployed flex-auth policy and
|
||||
accepted into audit-core with correlated event IDs. Existing deployed allow,
|
||||
cross-tenant deny, missing-role deny, and wrong-system deny evidence remains
|
||||
valid.
|
||||
|
||||
## T02 - Add invitation and verification mail delivery
|
||||
|
||||
```task
|
||||
|
|
@ -97,7 +103,7 @@ entry; production is deliberately not pointed at a fabricated endpoint.
|
|||
|
||||
```task
|
||||
id: NK-WP-0024-T03
|
||||
status: progress
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "17d6390b-05a8-436c-879b-4e0331d85be5"
|
||||
```
|
||||
|
|
@ -167,3 +173,24 @@ reach flex-auth, audit-core, and email-connect with HTTP 200 through the
|
|||
declared NetworkPolicies. Remaining T04 evidence is application-level outbox
|
||||
delivery and the negative matrix; health reachability alone is not reported
|
||||
as delivery acceptance.
|
||||
|
||||
2026-08-14 live outbox proof: nine existing durable non-mail events were
|
||||
dispatched through the deployed user-engine adapter. Three were accepted
|
||||
immediately. Six received HTTP 400 because audit-core's `user-engine` sender
|
||||
was limited to `tenant:friendly:binky`; the platform service legitimately
|
||||
emits for multiple tenants. The sender remains write-only and source-bound to
|
||||
`user-engine`, but its tenant claim scope is now `*`. After audit-core restart,
|
||||
explicit replay delivered all six with attempt count 2; user-engine reports
|
||||
zero pending events.
|
||||
|
||||
The run also exposed a PostgreSQL retry defect: `pending_outbox()` filtered on
|
||||
`failed_at IS NULL`, unlike the in-memory contract, so bounded retries stopped
|
||||
after one failure. user-engine commit `0b6a57d` selects every undelivered,
|
||||
non-dead-letter event and adds regression coverage; the full suite passes 133
|
||||
tests with 3 external skips. The corrected immutable image is
|
||||
`sha256:1402712e8f3ddc1397e83edb9627251b0ea362f1e3308d252d0d688ac589556e`.
|
||||
|
||||
T03 is complete: all nine durable source events are delivered, replay is
|
||||
idempotent at audit-core, user-engine reports zero pending events, and the
|
||||
corrected bounded-retry query is live and Ready. T04 remains open for the
|
||||
mail-producing application journey and its attended negative cases.
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ provider failure after local completion, and run disposable live conformance.
|
|||
|
||||
```task
|
||||
id: NK-WP-0025-T03
|
||||
status: wait
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "3ec4a9a0-cbce-4c63-8ed8-db36f4cae0fb"
|
||||
```
|
||||
|
|
@ -133,6 +133,15 @@ Done when direct NetKingdom registration and coulomb.social-initiated
|
|||
registration converge on the same verified identity flow without open
|
||||
redirects or client confusion.
|
||||
|
||||
Done 2026-08-14: public registration is enabled only for client
|
||||
`coulomb-social` and `tenant:coulomb`; the password handoff permits only the
|
||||
HTTPS `kc.coulomb.social` origin. The user-engine `/register` page is live.
|
||||
railiance-apps commit `963de9c` publishes
|
||||
`NETKINGDOM_REGISTRATION_URL=https://users.92-205-62-239.nip.io/register`, and
|
||||
the live coulomb.social `/auth/register/` returns a 302 to that exact URL.
|
||||
Unknown-client and unknown-tenant API requests both return 400 before any mail
|
||||
request. The fresh OIDC flow remains provider-owned after password setup.
|
||||
|
||||
## T04 - Apply optional MFA policy safely
|
||||
|
||||
```task
|
||||
|
|
@ -155,6 +164,12 @@ Source implementation adds a per-client minimum override and honors explicit
|
|||
`acr_values=aal2`; only the coulomb-social static registration selects AAL1.
|
||||
Other clients retain provider-driven mandatory MFA. Live rollout remains.
|
||||
|
||||
2026-08-14 rollout: public registration is live with a scoped verification
|
||||
token. An authenticated malformed consume request reaches email-connect and
|
||||
returns 400 rather than 401, proving the caller credential without exposing
|
||||
it. Repeated invalid opaque handles return the same redacted 400 response.
|
||||
Client and tenant allow-list negatives also fail before mail issuance.
|
||||
|
||||
## T05 - Prove both cases end to end
|
||||
|
||||
```task
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue