]> source.dussan.org Git - gitea.git/commit
Prevent double-login for Git HTTP and LFS and simplify login (#15303)
authorzeripath <art27@cantab.net>
Sat, 15 May 2021 15:32:09 +0000 (16:32 +0100)
committerGitHub <noreply@github.com>
Sat, 15 May 2021 15:32:09 +0000 (17:32 +0200)
commit17c5c654a57ecf51c8c7c8ecfc6c86ae313d4000
tree215186f39aba3a6a92a40b64b0ba546f01e23f4b
parentba526ceffe33a54b6015cdfbdc9bba920484dc23
Prevent double-login for Git HTTP and LFS and simplify login (#15303)

* Prevent double-login for Git HTTP and LFS and simplify login

There are a number of inconsistencies with our current methods for
logging in for git and lfs. The first is that there is a double login
process. This is particularly evident in 1.13 where there are no less
than 4 hash checks for basic authentication due to the previous
IsPasswordSet behaviour.

This duplicated code had individual inconsistencies that were not
helpful and caused confusion.

This PR does the following:

* Remove the specific login code from the git and lfs handlers except
for the lfs special bearer token
* Simplify the meaning of DisableBasicAuthentication to allow Token and
Oauth2 sign-in.
* The removal of the specific code from git and lfs means that these
both now have the same login semantics and can - if not
DisableBasicAuthentication - login from external services. Further it
allows Oauth2 token authentication as per our standard mechanisms.
* The change in the recovery handler prevents the service from
re-attempting to login - primarily because this could easily cause a
further panic and it is wasteful.

* add test

Signed-off-by: Andrew Thornton <art27@cantab.net>
Co-authored-by: Andrew Thornton <art27@cantab.net>
integrations/api_repo_lfs_locks_test.go
modules/auth/sso/basic.go
modules/auth/sso/sso.go
modules/auth/sso/sso_test.go [new file with mode: 0644]
modules/context/context.go
routers/private/internal.go
routers/repo/http.go
routers/routes/base.go
services/lfs/locks.go
services/lfs/server.go