mirror of
https://github.com/nestriness/nestri.git
synced 2026-09-19 09:15:19 +03:00
46 lines
1.8 KiB
Markdown
46 lines
1.8 KiB
Markdown
# packages/auth (`@nestri/auth`)
|
|
|
|
Framework-agnostic OpenAuth implementation for Nestri — the OAuth/OIDC **issuer**, **client**,
|
|
**subjects**, and the login **UI**. A vendored/forked build of **OpenAuth**.
|
|
|
|
## What it does
|
|
|
|
Everything needed to run your own authentication provider:
|
|
|
|
- **`issuer.ts`** — the authorization server: routes for `/authorize`, `/callback`, `/token`,
|
|
`/userinfo`, `.well-known/*`, plus the login UI (React renderer).
|
|
- **`client.ts`** — `createClient` to verify JWTs against the issuer ("who is this token?").
|
|
- **`subject.ts`** — typed JWT subjects (`zod` schemas for the token payload).
|
|
- **`provider/*`** — drop-in OAuth/OIDC providers (steam, discord, github, google, apple,
|
|
microsoft, slack, spotify, twitch, x, yahoo, facebook, linkedin, cognito, keycloak, jumpcloud,
|
|
oauth2, oidc, password, ssh, code, arctic).
|
|
- **`storage/*`** — persistence adapters for keys/sessions/codes: `memory`, `cloudflare` (KV),
|
|
`aws`, `dynamo`.
|
|
- **`ui/*`** — the login page components (forms, password, code, theme, CSS).
|
|
- **`jwt.ts`, `keys.ts`, `pkce.ts`, `random.ts`** — signing, keypair management, PKCE, randomness.
|
|
|
|
## Usage
|
|
|
|
Consumed by the [`apps/auth`](../../apps/auth/README.md) worker, e.g.:
|
|
|
|
```ts
|
|
import { issuer } from '@nestri/auth/index';
|
|
import { CloudflareStorage } from '@nestri/auth/storage/cloudflare';
|
|
import { SteamProvider } from '@nestri/auth/provider/steam';
|
|
```
|
|
|
|
The API uses `createClient` (from `@openauth/openauth/client`) or the bundled `client.ts` to verify
|
|
tokens against the issuer URL.
|
|
|
|
## Scripts
|
|
|
|
```sh
|
|
bun test # run tests
|
|
bun run build # build (see script/build.ts)
|
|
```
|
|
|
|
## Note
|
|
|
|
`@openauthjs` is the upstream project; this package's exports are meant to be API-compatible with a
|
|
pinned preference toward tree-shaking-friendly imports. Prefer importing subpaths over the barrel
|
|
(`@nestri/auth/index`). |