Skip to content

Commit

Permalink
Remove ReverseProxy authentication from the API (go-gitea#22219)
Browse files Browse the repository at this point in the history
Since we changed the /api/v1/ routes to disallow session authentication
we also removed their reliance on CSRF. However, we left the
ReverseProxy authentication here - but this means that POSTs to the API
are no longer protected by CSRF.

Now, ReverseProxy authentication is a kind of session authentication,
and is therefore inconsistent with the removal of session from the API.

This PR proposes that we simply remove the ReverseProxy authentication
from the API and therefore users of the API must explicitly use tokens
or basic authentication.

Replace go-gitea#22077
Close go-gitea#22221 
Close go-gitea#22077 

Signed-off-by: Andrew Thornton <art27@cantab.net>
  • Loading branch information
zeripath authored and lunny committed Dec 27, 2022
1 parent 5583eaa commit 9a91342
Showing 1 changed file with 3 additions and 9 deletions.
12 changes: 3 additions & 9 deletions routers/api/v1/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -232,13 +232,10 @@ func reqExploreSignIn() func(ctx *context.APIContext) {
}
}

func reqBasicOrRevProxyAuth() func(ctx *context.APIContext) {
func reqBasicAuth() func(ctx *context.APIContext) {
return func(ctx *context.APIContext) {
if ctx.IsSigned && setting.Service.EnableReverseProxyAuth && ctx.Data["AuthedMethod"].(string) == auth.ReverseProxyMethodName {
return
}
if !ctx.Context.IsBasicAuth {
ctx.Error(http.StatusUnauthorized, "reqBasicOrRevProxyAuth", "auth required")
ctx.Error(http.StatusUnauthorized, "reqBasicAuth", "auth required")
return
}
ctx.CheckForOTP()
Expand Down Expand Up @@ -597,9 +594,6 @@ func buildAuthGroup() *auth.Group {
&auth.HTTPSign{},
&auth.Basic{}, // FIXME: this should be removed once we don't allow basic auth in API
)
if setting.Service.EnableReverseProxyAuth {
group.Add(&auth.ReverseProxy{})
}
specialAdd(group)

return group
Expand Down Expand Up @@ -689,7 +683,7 @@ func Routes(ctx gocontext.Context) *web.Route {
m.Combo("").Get(user.ListAccessTokens).
Post(bind(api.CreateAccessTokenOption{}), user.CreateAccessToken)
m.Combo("/{id}").Delete(user.DeleteAccessToken)
}, reqBasicOrRevProxyAuth())
}, reqBasicAuth())
}, context_service.UserAssignmentAPI())
})

Expand Down

0 comments on commit 9a91342

Please sign in to comment.