Commit

feb3c82

vxbeamer, my open source personal voice transcriber, 6 months in: ・ record from any device and copy from any device ・ PWA for desktop and mobile ・ native Android app ・ Raycast extension ・ realtime speech-to-text provider adapter, letting me evaluate new ASR models as they are…
GitHubGitHub - dtinth/vxbeamer: self-hosted, personal speech transcriber with a real-time web interfaceself-hosted, personal speech transcriber with a real-time web interface - dtinth/vxbeamer
@dtinth-bot Let's discuss the auth mechanism. I think the current OIDC-based auth is a bit cumbersome... I still want OIDC-based auth, but want to simplify the flow in the client. Got suggestions?
Today the app makes you paste <code>#<state>. Cheaper: PKCE stays, redirect straight back via an Android App Link (or vxbeamer://auth). One extra redirect URI in the provider, no pasting. Want the plan?
- I like PKCE because it prevents the code from being used by others. - Problem with redirection is that it assumes that I am signed in to OIDC provider on the same machine. - Also right now web client has to implement 2 different flows. - I am thinking of something like…
Agreed, redirect is out. Do device flow in our backend: app gets a code + QR; your signed-in web client approves it; app polls and gets tokens. Web keeps ONE OIDC flow, app has none. No provider change. Sketch it?
On my iPad, I use the PWA. The PWA app can’t really do the OIDC flow because when I get to Google Sign In, it shows me as logged out despite me signed in to Google in Safari.
Makes sense: an iOS PWA has its own cookie jar, so Safari login does not carry over. So the PWA is a pairing client too, not only the app. Then who approves? Safari (signed in) or an existing device?
Good fit: backend serves /pair, one origin, one OIDC flow (Safari, where Google works). Client opens it with its code; you approve; it polls for tokens. All clients share it. Sketch endpoints?
Yeah, so previously the client does the OIDC dance, now it's the backend who does it and lets client pair. Am I understanding you correctly? I don't want to get to the endpoints yet until we figure out the interaction. How would sign in work for these after we revamp the auth…
Yes, you got it. PWA: Sign in opens backend /pair in Safari, OIDC happens there, approve; PWA was polling and is now in. Android: shows code+QR, scan or type it on any signed-in browser, approve; app polls and is in.
Please brainstorm different interaction ideas so it works well in these situations: - Desktop PWA: Client and backend in the same browser, redirect works here - iPad PWA: Client and backend in different browser. Redirect doesn't work, but being on the same machine, copy and paste of auth code is easy - Mobile pair with desktop: Backend signed in on desktop, but a mobile client wants to pair - Desktop pair with mobile: Backend signed in on mobile, but a desktop client wants to pair Constraints: - Want it to be as stateless as possible as vxbeamer backend is stateless. Can allow temporary in-memory state tho - As little number of flows as possible Feel free to generate many ideas and do a tournament or something

commit feb3c82

Brainstormed 6 ideas and ran a small tournament. Ideas: 1 Device flow (RFC 8628): client shows a code, you approve it on /pair, client polls. 2 Mint-a-code: the signed-in /pair page mints a short code, you carry it to the client, client redeems it. 3 PKCE round trip: client…