| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Universal one-click sign-in for Solid pods. One screen, one button. You click, the universe figures out who you are, you land at your pod.
A static HTML page (no build step, no server, no dependencies) that wraps the JSS resolver chain we shipped in JSS#408 with the smallest possible UI surface — one big button.
Happy path (one click, one signer-prompt, no IdP page):
Failure path — at every step, if something's not set up, the page shows a precise diagnosis + the user's next concrete action (install a signer, link the Nostr key to a pod, try a different resolver, etc.). PoC philosophy: assume everything works; gracefully degrade with guidance when it doesn't.
Trade-off: the user lands at their pod without an authenticated session. They can browse public content; anything WAC-protected prompts for a real session via whatever app needs it. The ?webid= handoff is plain text for now — unsigned, unverified. For the "magic SSO landing" promise that's enough — the signed handoff (NIP-98) is 0.0.2 phase 2, and the full authenticated session is 0.0.8 on the roadmap.
No username box. No IdP picker. No "what app are you logging in from?" question. Click → resolve → arrive.
┌────────────────────────────────────────┐
│ sso.solid.social (or any host) │
│ ┌──────────────────────┐ │
│ │ Sign in to Solid │ ← only UI │
│ └──────────────────────┘ │
└────────────────┬───────────────────────┘
│ fetch /.well-known/did/nostr/<pubkey>.json
▼
┌────────────────────────────────────────┐
│ JSS resolver chain (already shipped) │
│ 1. CID v1 verificationMethod (#399) │
│ 2. Local index (.idp/accounts) │
│ 3. .well-known/did/nostr (#408, #411)│
│ 4. External HTTP did:nostr resolver │
│ 5. did:nostr identity (fallback) │
└────────────────┬───────────────────────┘
│ resolved WebID
▼
┌────────────────────────────────────────┐
│ Redirect to pod root │
│ + ?webid=did:nostr:<pubkey> │
└────────────────────────────────────────┘
Same-pod users hit the local index — zero typing required. Cross-pod users hit the configured HTTP resolver until #414 (relay-based resolution) lands, after which the resolution becomes fully decentralized.
No build step. Pure static files. Any static server works:
npx serve . # any port
python3 -m http.server 8080(A server is required — login.js is an ES module, and browsers block module scripts on file:// URLs.)
URL params:
| Param | Default | Purpose |
|---|---|---|
| resolver | https://solid.social | Host serving /.well-known/did/nostr/<pubkey>.json |
| next | pod root derived from WebID | Where to land after sign-in |
https://nostr.social serves as the did-nostr.com source fallback when a key isn't linked at the default resolver.
Example: a Solid app wants users identified and sent back —
https://sso.solid.social/?resolver=https://nostr.social&next=https://myapp.example/
(Resolver memory in localStorage — so return visits skip straight to the right host — is 0.0.7 on the roadmap.)
Three sensible deployment targets:
0.0.3 — manual key sign-in. The one-button UX works end-to-end against solid.social as the resolver, the redirect carries ?webid=did:nostr:<pubkey> so the pod's auth widget can pick up the arriving identity (unsigned for now; 0.0.2 phase 2 signs it with NIP-98), and users without a signer extension can paste an npub, hex pubkey, or — PoC, test keys only — an nsec instead. Resolution uses the JSS resolver chain shipped in #408 through #418.
Following JSS's own 0.0.x versioning (small, frequent bumps, each adding one capability).
MIT. See LICENSE.
| Back | FazBrowse Home | New Git URL |