familiar is issuer-agnostic (OAuth resource server only), so Gitea can back oauth mode with config alone — no code change.
Changes
doc/deployment.md — new "Using Gitea as the OAuth issuer" section: RS256 JWTs, JWKS at /login/oauth/keys, OIDC discovery, the env config, the aud=client-ID audience pitfall, and the no-DCR caveat. The oauth-mode bullet now lists Gitea alongside Authentik/Keycloak.
.env.example — Gitea example block under the OAuth section, with the audience/DCR notes as comments.
doc/clients/claude-web.md — explicit note that Gitea can't back the claude.ai web connector (which requires Dynamic Client Registration).
Notes for whoever enables it
Audience: Gitea puts the OAuth app's client ID in the token aud (not the resource URL) → set FAMILIAR_OAUTH_AUDIENCE to the client ID; verify by decoding a real token.
Signing algorithm: must stay asymmetric (RS256 default) for JWKS verification; HS* won't work.
Docs-only; no code paths touched.
familiar is issuer-agnostic (OAuth resource server only), so Gitea can back `oauth` mode with config alone — no code change.
## Changes
- **`doc/deployment.md`** — new *"Using Gitea as the OAuth issuer"* section: RS256 JWTs, JWKS at `/login/oauth/keys`, OIDC discovery, the env config, the `aud`=client-ID audience pitfall, and the no-DCR caveat. The oauth-mode bullet now lists Gitea alongside Authentik/Keycloak.
- **`.env.example`** — Gitea example block under the OAuth section, with the audience/DCR notes as comments.
- **`doc/clients/claude-web.md`** — explicit note that Gitea can't back the claude.ai web connector (which requires Dynamic Client Registration).
## Notes for whoever enables it
- **Audience:** Gitea puts the OAuth app's client ID in the token `aud` (not the resource URL) → set `FAMILIAR_OAUTH_AUDIENCE` to the client ID; verify by decoding a real token.
- **Signing algorithm:** must stay asymmetric (RS256 default) for JWKS verification; `HS*` won't work.
Docs-only; no code paths touched.
familiar is issuer-agnostic (resource server only), so Gitea can back
oauth mode with config alone: RS256 JWTs, JWKS at /login/oauth/keys, and
OIDC discovery. Add a deployment.md section covering the env config, the
aud=client-ID audience pitfall, and the no-DCR caveat; add a Gitea block
to .env.example; and note in claude-web.md that Gitea can't back the
claude.ai web connector (which requires DCR).
Latte
merged commit 30036799dc into dev2026-07-12 15:57:06 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
familiar is issuer-agnostic (OAuth resource server only), so Gitea can back
oauthmode with config alone — no code change.Changes
doc/deployment.md— new "Using Gitea as the OAuth issuer" section: RS256 JWTs, JWKS at/login/oauth/keys, OIDC discovery, the env config, theaud=client-ID audience pitfall, and the no-DCR caveat. The oauth-mode bullet now lists Gitea alongside Authentik/Keycloak..env.example— Gitea example block under the OAuth section, with the audience/DCR notes as comments.doc/clients/claude-web.md— explicit note that Gitea can't back the claude.ai web connector (which requires Dynamic Client Registration).Notes for whoever enables it
aud(not the resource URL) → setFAMILIAR_OAUTH_AUDIENCEto the client ID; verify by decoding a real token.HS*won't work.Docs-only; no code paths touched.