ietf-tools / ietf-tools/dev-planning-dispatch

Select & integrate OIDC client library

Open
#56 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
No language data
Stars
2
Forks
0
PR merge metrics
No merged PRs in 30d

Description

Status: ✅ Done — with a library pivot.

Adopted a battle-tested, client-side, headless OIDC library and integrated it as plain TypeScript, deliberately avoiding the Nuxt auth modules (nuxt-oidc-auth, nuxt-auth-utils, @sidebase/nuxt-auth) because those are server-side/BFF and incompatible with Red's cacheable-anonymous-origin architecture.

oidc-spa was tried first and then rejected. Because the identity provider (account.ietf.org) is cross-origin to the site (rfc-editor.org), third-party cookies are blocked, and oidc-spa falls back to a full-page redirect through the IdP on every page load to restore the session — with no configuration to turn it off. That produces a visible redirect flash on every load (deep links, refresh, new tabs), which is unacceptable for a high-traffic site. It is a fundamental mismatch; oidc-spa's own documentation steers SSR/multi-page apps away.

oidc-client-ts was chosen. It is client-only, framework-agnostic, and headless. The session persists in localStorage and renews via the refresh token against the token endpoint (CORS), so page loads never redirect — only an explicit login does. It is wrapped in plain TypeScript at app/utilities/oidc.ts, dynamically imported so nothing executes during SSR and it stays out of the main bundle.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the existing integration at app/utilities/oidc.ts and review how the selected client-only OIDC library is dynamically imported. Done means the integration avoids SSR execution and main-bundle inclusion, persists sessions in localStorage, renews through the token endpoint, and redirects only for explicit login.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
authentication
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.