mirror of
https://github.com/fosrl/pangolin.git
synced 2026-05-08 05:39:49 -05:00
[PR #2568] feat: OIDC provider for "Login with Pangolin" #7835
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/fosrl/pangolin/pull/2568
Author: @mallendeo
Created: 3/1/2026
Status: 🔄 Open
Base:
dev← Head:feat/oidc-provider📝 Commits (10+)
8c48803feat: implement oidc provider and oauth client managementd915b8efix: localize oauth oidc ui strings7c1d5aafeat: refactor oauth clients ui to match pangolin patterns, fix login redirectcb5be1ffix: add missing oauth i18n keys to all locales744ea72fix: patch zod-to-openapi to support ZodCatch type3888e07feat: improve oauth consent page ui3763deffeat: add connected apps page for managing oauth consents466b8edfeat: add edit profile dialog for name and username59a93e2feat: add given_name and family_name to OIDC claims4841ef8fix: add missing i18n keys to all locales📊 Changes
62 files changed (+6799 additions, -205 deletions)
View changed files
📝
install/config/crowdsec/dynamic_config.yml(+4 -4)📝
install/config/traefik/dynamic_config.yml(+4 -4)📝
messages/en-US.json(+114 -1)📝
server/apiServer.ts(+3 -0)📝
server/auth/actions.ts(+5 -0)📝
server/db/pg/schema/schema.ts(+187 -0)📝
server/db/sqlite/schema/schema.ts(+199 -1)📝
server/index.ts(+2 -0)📝
server/lib/cleanupLogs.ts(+3 -0)📝
server/lib/consts.ts(+1 -1)➕
server/lib/oauth/backchannelLogout.ts(+162 -0)➕
server/lib/oauth/backchannelLogoutSecurity.ts(+328 -0)➕
server/lib/oauth/claims.ts(+111 -0)➕
server/lib/oauth/clientAuth.ts(+145 -0)➕
server/lib/oauth/clientMembership.ts(+22 -0)➕
server/lib/oauth/issuer.ts(+17 -0)➕
server/lib/oauth/keys.ts(+112 -0)➕
server/lib/oauth/lifetimes.ts(+5 -0)➕
server/lib/oauth/scopes.ts(+51 -0)➕
server/lib/oauth/tokens.ts(+61 -0)...and 42 more files
📄 Description
Community Contribution License Agreement
By creating this pull request, I grant the project maintainers an unlimited,
perpetual license to use, modify, and redistribute these contributions under any terms they
choose, including both the AGPLv3 and the Fossorial Commercial license terms. I
represent that I have the right to grant this license for all contributed content.
Description
Implements Pangolin as an OIDC provider for “Login with Pangolin”, with full OAuth client management for admins and app-consent management for users.
See https://github.com/orgs/fosrl/discussions/21
Scaffolding and ongoing development were AI-assisted (Opus 4.6 / Codex 5.3); not all code has been manually reviewed. Contributions welcome.
What’s included
end_session_endpoint)given_name,family_name, and org-scopedgroupsHow to test
If upgrading from a previous install, route
/.well-knownto the API service.In
config/traefik/dynamic_config.yml, update the Next.js and API router rules:Restart Traefik after changing this.
Create an OAuth client
Verify discovery
curl https://yourdomain.com/.well-known/openid-configuration
Expected: JSON with fields like
issuer,authorization_endpoint,token_endpoint,userinfo_endpoint,jwks_uri,revocation_endpoint,and
end_session_endpoint.Available scopes and claims
Endpoints
Demo
TODO
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.