fix(auth): add PKCE to OpenID Connect login
giteabot backport / giteabot (push) Canceled after 0s
giteabot / giteabot (push) Canceled after 0s
release-nightly / nightly-binary (push) Canceled after 0s
release-nightly / nightly-container (push) Canceled after 0s
release-nightly-snapcraft / build-and-publish (push) Canceled after 0s

Generate a per-login verifier, persist it in the Goth session, send an S256 challenge, and include the verifier during the token exchange when explicitly enabled.

Assisted-by: Codex:GPT-5
This commit is contained in:
2026-08-29 16:19:49 +08:00
parent 23b7c61eff
commit 746b23b098
7 changed files with 292 additions and 8 deletions
+1 -2
View File
@@ -20,7 +20,6 @@ import (
"gitea.dev/modules/setting"
"github.com/markbates/goth"
"github.com/markbates/goth/providers/openidConnect"
)
// Provider is an interface for describing a single OAuth2 provider
@@ -210,7 +209,7 @@ func GetOIDCEndSessionEndpoint(providerName string) string {
return ""
}
oidcProvider, ok := provider.(*openidConnect.Provider)
oidcProvider, ok := asOpenIDConnectProvider(provider)
if !ok || oidcProvider.OpenIDConfig == nil {
return ""
}