Skip to content

docs(nips): complete NIP-FI authorization draft - #3726

Draft
cea-block wants to merge 11 commits into
mainfrom
cea/nip-fi-continuation
Draft

docs(nips): complete NIP-FI authorization draft#3726
cea-block wants to merge 11 commits into
mainfrom
cea/nip-fi-continuation

Conversation

@cea-block

Copy link
Copy Markdown

Why

Continue #1485 as an isolated Buzz-local draft so the NIP-FI contract can be completed and reviewed without modifying its original branch or #1476.

What

Risk Assessment

Low — documentation only; no runtime code or configuration changes. This is a Buzz-local draft and does not represent upstream NIP acceptance.

References

  • Continues NIP-FI: Federated Identity Authorization (spec + formal model) #1485 at its exact original head 805f1131b8c946cfdcff4508d20f1758515a5990
  • Leaves feat(relay): add relay-verified identity binding #1476 unchanged at 1e9822de8dbe0ae91c00c0ce0ed8ff583915692f
  • Exact head 921fd73161780df893961ef053b9aee74be80d12 passed three independent Claude/GPT-family reviews with no P0/P1 findings; Gemini review was unavailable because its CLI authentication was rejected
  • Markdown diff, anchors, unique trace IDs, 9-column table structure, and GitHub GFM rendering validated locally
  • Full just ci reached only six pre-existing desktop Rust Clippy warnings under Rust 1.95 after the core Rust and desktop JavaScript checks passed; this diff changes only three Markdown files

Generated with Codex

npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d and others added 11 commits July 2, 2026 20:28
Normative spec for authorizing a NIP-42/NIP-98-proven Nostr key only when
a valid OIDC/JWT assertion resolves to the same active identity-to-key
binding. Covers assertion transport (trusted-proxy and client-attached
profiles), validation, per-domain binding bijection, enrollment modes
(attested-key/provisioned/tofu), lease/session bounds, revocation and
rotation, delegation composition, rejection semantics, discovery, and
privacy. Companion formal model to follow on this branch.

Generalizes the semantics implemented in #1476 into a provider-neutral
standard per buzz-security thread 0d1aee9e.

Co-authored-by: Tyler Longwell <tlongwell@block.xyz>
Signed-off-by: Tyler Longwell <tlongwell@block.xyz>
Define the trust assumptions, authorization predicate, binding state machine, safety and liveness properties, and adversarial traces for federated identity authorization. Tighten the normative draft with a collision-free client assertion header and concrete NIP-11 discovery shape.

Co-authored-by: Tyler Longwell <tlongwell@block.xyz>
Signed-off-by: Tyler Longwell <tlongwell@block.xyz>
Two cold-read consistency fixes: the model's race clause still said a
lost race must deny, contradicting the spec's exact-match-allows rule;
and the spec's session text offered 'require a fresh assertion' at lease
expiry, which has no defined mid-connection transport — assertions only
arrive on an upgrade request.

Co-authored-by: Tyler Longwell <tlongwell@block.xyz>
Signed-off-by: Tyler Longwell <tlongwell@block.xyz>
Remove the model's remaining impossible mid-connection assertion refresh option so its WebSocket transition exactly matches the normative transport.

Co-authored-by: Tyler Longwell <tlongwell@block.xyz>
Signed-off-by: Tyler Longwell <tlongwell@block.xyz>
Signed-off-by: Cea Stapleton Cordasco <261786559+cea-block@users.noreply.github.com>
Signed-off-by: Cea Stapleton Cordasco <261786559+cea-block@users.noreply.github.com>
Signed-off-by: Cea Stapleton Cordasco <261786559+cea-block@users.noreply.github.com>
Signed-off-by: Cea Stapleton Cordasco <261786559+cea-block@users.noreply.github.com>
Signed-off-by: Cea Stapleton Cordasco <261786559+cea-block@users.noreply.github.com>
Signed-off-by: Cea Stapleton Cordasco <261786559+cea-block@users.noreply.github.com>
Signed-off-by: Cea Stapleton Cordasco <261786559+cea-block@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant