docs(adr): signing up in one call, the password's own proof key, changes with a fresh SimpleLogin sign-in (ADR 0020)
D18 to D20, the developer's, before step 3: the device makes the handle, the keys and the recovery phrase before one `simpleLogin.signUp`, so no account is ever unfinished; a third subkey of the password's Argon2id seeds an Ed25519 key the register checks, and a new device gets the wrapped keys only after proving the password with it; a new password, a new phrase and deleting the account take the password's proof and a SimpleLogin sign-in of the last ten minutes. Step 2's deviations from the proposal are noted as accepted. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
42d06f7ee8
commit
b4c93e03de
1 changed files with 23 additions and 3 deletions
|
|
@ -1,7 +1,7 @@
|
|||
# ADR 0020: Signing in with SimpleLogin only
|
||||
|
||||
- **Status:** decided 23 Oct 2026, by the developer (D1–D17 below), the *Proposal*
|
||||
with it (D15).
|
||||
- **Status:** decided 23 Oct 2026, by the developer (D1–D20 below), the *Proposal*
|
||||
with it (D15), as D18 to D20 change it.
|
||||
- **Built (23 Oct 2026), step 1:** the forwarding page (3),
|
||||
`/simplelogin-callback` on the register's web server (halkyon_base's
|
||||
`addSimpleLoginCallbackRoute`, Caddy forwarding the path), ahead of the sign-in, so
|
||||
|
|
@ -28,7 +28,8 @@
|
|||
them; GitHub links nobody more where SimpleLogin is offered, as where passwords are
|
||||
(ADR 0017); `SIGN_IN_WAYS` counts on the register, which members ask, and stops any
|
||||
server with a name it doesn't know as it starts; sessions name the method
|
||||
`simplelogin`. Someone new gets no account yet: their identity waits (D16), with a
|
||||
`simplelogin` (these deviations accepted by the developer, 23 Oct). Someone new gets
|
||||
no account yet: their identity waits (D16), with a
|
||||
handle suggested (D17), for the sign-up of step 3. halkyon_oidc's `testing.dart` gives
|
||||
hosts a fake SimpleLogin signing real ID tokens, which the module's tests use too.
|
||||
- **Builds on:** ADR 0010 (email sign-in), ADR 0011 (profile pages), ADR 0016 (the
|
||||
|
|
@ -130,6 +131,25 @@ against app.simplelogin.io on 23 Oct:
|
|||
cut to 30 characters, and where the handle is taken (whatever its case) or kept by the
|
||||
instance, a number from 2 to 99 after it. None where nothing of the name is left (a
|
||||
name in another script): the person types one.
|
||||
- **D18 Signing up in one call** (23 Oct, night, recommended, over the proposal's two
|
||||
steps): the device takes the handle, makes the keys, asks the password twice and shows
|
||||
the recovery phrase (three of its words typed back), then `simpleLogin.signUp` makes
|
||||
the account and its session together, the newcomer's identity taken once. No account is
|
||||
ever unfinished, so D11's deletion after a day has nothing left to delete.
|
||||
- **D19 The password proven with a proof key of its own, the keys only after it** (23
|
||||
Oct, night, recommended, over the keys coming with the session, as Bitwarden's SSO
|
||||
has it, and over keeping SRP): a third subkey of the password's Argon2id seeds an
|
||||
Ed25519 key, whose public half the register keeps; the device signs a one-time nonce
|
||||
with it as it signs with the recovery phrase's (ADR 0017, the same challenges and
|
||||
message). A new device gets the wrapped keys once it has proven the password, so
|
||||
someone who took over a SimpleLogin account can only guess the password online,
|
||||
against the limits, never offline. SimpleLogin accounts keep no SRP verifier.
|
||||
- **D20 Changes take the password and a fresh SimpleLogin sign-in** (23 Oct, night,
|
||||
recommended, over the password's proof alone): a new password, a new recovery phrase
|
||||
and deleting the account take the password's proof (the phrase's, for a lost
|
||||
password) and a SimpleLogin sign-in of the last ten minutes, the two factors of ADR
|
||||
0017's third reading with SimpleLogin's and Proton's own second factor in TOTP's
|
||||
place.
|
||||
- **Also (23 Oct):** the developer's own account moves by adding SimpleLogin to it while
|
||||
signed in with GitHub; the instance's SimpleLogin app goes up for approval once
|
||||
halkyon.app/learn exists, before learn.halkyon.eu switches.
|
||||
|
|
|
|||
Loading…
Reference in a new issue