Add company welcome and verified NetKingdom sign-in
Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a092fe-13b1-7f12-ac74-7d258af4d79c
This commit is contained in:
parent
4175709024
commit
8be281025b
17 changed files with 1044 additions and 23 deletions
74
docs/netkingdom-sign-in.md
Normal file
74
docs/netkingdom-sign-in.md
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
# Company welcome and NetKingdom sign-in
|
||||
|
||||
VERGABE-WP-0019-T06. The isolated company instance consumes Authorization Code
|
||||
with S256 PKCE and a browser-bound state and nonce. It discovers endpoints from
|
||||
the configured HTTPS issuer, pins RS256, verifies signature/issuer/audience,
|
||||
time and nonce, and uses a unique `(issuer, subject)` record for the local user.
|
||||
It never merges accounts by email or directory display name.
|
||||
|
||||
Admission requires the exact configured tenant, `tenant_source: directory`, a
|
||||
human principal and the signed `<tenant>:users` membership group. Suspended,
|
||||
platform and emergency identities fail. This is the existing invited-company
|
||||
pilot rule: admitted members collaborate on all company tenders. Tenant-admin
|
||||
claims do not grant Django staff or superuser rights. New local users have no
|
||||
usable local password. Local deactivation immediately blocks existing sessions;
|
||||
provider-side revocation is bounded by the product's absolute five-minute
|
||||
session maximum (or the token expiry, whichever comes first).
|
||||
|
||||
The welcome page never consumes password-setup tokens. A CSRF-protected sign-in
|
||||
action clears the current product session and requests `prompt=login`. A valid
|
||||
callback displays the verified account and requires another CSRF-protected
|
||||
confirmation before creating a product session. External `next` and `return_to`
|
||||
parameters are not used. The callback redirects to a clean URL before displaying
|
||||
identity. Gunicorn access logging records the URL path without query strings.
|
||||
Passwords and bearer tokens are not persisted in the product.
|
||||
|
||||
## Exact demo binding
|
||||
|
||||
Enable only with the registered client and the verified KeyCape fresh-login
|
||||
release. The currently deployed `dcebd46` issuer lacks `tenant_source` and does
|
||||
not propagate fresh-login requests to Authelia; this product fails closed on it.
|
||||
|
||||
```
|
||||
NETKINGDOM_ENABLED=true
|
||||
NETKINGDOM_ISSUER=https://kc.coulomb.social
|
||||
NETKINGDOM_CLIENT_ID=vergabe-demo-company
|
||||
NETKINGDOM_CALLBACK=https://vergabe-teilnahme.coulomb.social/demo-company/accounts/oidc/callback/
|
||||
NETKINGDOM_TENANT=tenant:trial:demo-company
|
||||
COMPANY_DISPLAY_NAME=Demo Company
|
||||
```
|
||||
|
||||
Use a public client with only `openid profile groups`, `authorization_code`,
|
||||
and the exact callback above. Do not add a client-declared tenant or a weaker
|
||||
MFA override. Keep the existing provider MFA policy. The application namespace
|
||||
requires narrowly scoped HTTPS egress to the issuer; its existing policy only
|
||||
allows database traffic and DNS.
|
||||
|
||||
NetKingdom's password setup maps `tenant:trial:demo-company` to the fixed HTTPS
|
||||
company entry in `PASSWORD_SETUP_TENANT_RETURNS`. That return is stored inside
|
||||
the setup grant at issuance and released only after successful consumption.
|
||||
There is no browser-supplied return address, recipient credential transfer,
|
||||
automatic product login or modification to the operator's portal session.
|
||||
Existing setup grants have no new destination; issue a fresh link if needed.
|
||||
|
||||
## Release and acceptance
|
||||
|
||||
Run application tests, assets build and migration drift checks, publish the
|
||||
exact source, and pin its digest in the existing Railiance pilot values.
|
||||
Migration 0003 adds only the unique identity mapping table. Keep the accepted
|
||||
60m CPU / 256Mi memory request and both data claims. Disabling
|
||||
NETKINGDOM_ENABLED restores the interim local login; OIDC-created users still
|
||||
have unusable local passwords, so rollback does not manufacture credentials.
|
||||
Keep the added table when reverting an application image.
|
||||
|
||||
KeyCape's current main also contains previously accepted startup and token
|
||||
issuance changes after deployed source dcebd46; validate the live registration
|
||||
configuration before upgrading (key-cape/docs/operations.md). Existing login
|
||||
attempts are process-local and are lost on its single-replica Recreate rollout.
|
||||
Password-setup links are likewise process-local and expire on provisioner restart.
|
||||
|
||||
Native acceptance still requires the actual invited user to complete setup,
|
||||
fresh sign-in and any provider-required MFA, confirm their account, and enter
|
||||
the company workflow. Do not substitute an operator session. Recovery and
|
||||
two-user workflow acceptance remain the existing RAPPS-WP-0014-T03 and
|
||||
VERGABE-WP-0019-T04 tasks.
|
||||
Loading…
Add table
Add a link
Reference in a new issue