diff options
author | zeripath <art27@cantab.net> | 2020-04-22 23:47:23 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-23 00:47:23 +0200 |
commit | e74c4e1be988f2815146338cbce8210e515a937e (patch) | |
tree | f2b8ad4b2b117f648ffbba23a1aba207ae43a9cf /routers/user | |
parent | b51fd30522af31eaf22ab15a826f9ee18fd53969 (diff) | |
download | gitea-e74c4e1be988f2815146338cbce8210e515a937e.tar.gz gitea-e74c4e1be988f2815146338cbce8210e515a937e.zip |
Add option to increase provided OAuth2 token maximum size (#11180)
Some OAuth2 providers return quite large structured tokens >32767 bytes.
Gitea currently has a fixed maximum of 32767 bytes for these and
unfortunately due to the convoluted nature of the dependent libraries the
error returned is rather opaque.
Here we manage the error a little better - detecting the rather opaque
github.com/gorilla/securecookie.errEncodedValueTooLong and converting
it to a more readable error.
Further we provide a configurable option to increase the maximum size of
the provided OAuth2 tokens.
Fix #9907
Signed-off-by: Andrew Thornton <art27@cantab.net>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
Diffstat (limited to 'routers/user')
-rw-r--r-- | routers/user/auth.go | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/routers/user/auth.go b/routers/user/auth.go index 6d762a058c..5ad095b857 100644 --- a/routers/user/auth.go +++ b/routers/user/auth.go @@ -670,6 +670,10 @@ func oAuth2UserLoginCallback(loginSource *models.LoginSource, request *http.Requ gothUser, err := oauth2.ProviderCallback(loginSource.Name, request, response) if err != nil { + if err.Error() == "securecookie: the value is too long" { + log.Error("OAuth2 Provider %s returned too long a token. Current max: %d. Either increase the [OAuth2] MAX_TOKEN_LENGTH or reduce the information returned from the OAuth2 provider", loginSource.Name, setting.OAuth2.MaxTokenLength) + err = fmt.Errorf("OAuth2 Provider %s returned too long a token. Current max: %d. Either increase the [OAuth2] MAX_TOKEN_LENGTH or reduce the information returned from the OAuth2 provider", loginSource.Name, setting.OAuth2.MaxTokenLength) + } return nil, goth.User{}, err } |