Skip to content

Commit

Permalink
Merge pull request #2095 from owncloud/oidc-token-basic-auth
Browse files Browse the repository at this point in the history
forward basic auth to OpenID connect token authentication endpoint
  • Loading branch information
butonic authored Jul 26, 2021
2 parents d6a3da5 + c3951d6 commit 968c9b7
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 1 deletion.
6 changes: 6 additions & 0 deletions changelog/unreleased/oidc-token-basic-auth.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Bugfix: forward basic auth to OpenID connect token authentication endpoint

When using `PROXY_ENABLE_BASIC_AUTH=true` we now forward request to the idp instead of trying to authenticate the request ourself.

https://github.com/owncloud/ocis/issues/2095
https://github.com/owncloud/ocis/issues/2094
8 changes: 7 additions & 1 deletion proxy/pkg/middleware/basic_auth.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func BasicAuth(optionSetters ...Option) func(next http.Handler) http.Handler {
return func(next http.Handler) http.Handler {
return http.HandlerFunc(
func(w http.ResponseWriter, req *http.Request) {
if h.isPublicLink(req) || !h.isBasicAuth(req) {
if h.isPublicLink(req) || !h.isBasicAuth(req) || h.isOIDCTokenAuth(req) {
if !h.isPublicLink(req) {
userAgentAuthenticateLockIn(w, req, options.CredentialsByUserAgent, "basic")
}
Expand Down Expand Up @@ -107,6 +107,12 @@ func (m basicAuth) isPublicLink(req *http.Request) bool {
return ok && login == "public" && strings.HasPrefix(req.URL.Path, publicFilesEndpoint)
}

// The token auth endpoint uses basic auth for clients, see https://openid.net/specs/openid-connect-basic-1_0.html#TokenRequest
// > The Client MUST authenticate to the Token Endpoint using the HTTP Basic method, as described in 2.3.1 of OAuth 2.0.
func (m basicAuth) isOIDCTokenAuth(req *http.Request) bool {
return req.URL.Path == "/konnect/v1/token"
}

func (m basicAuth) isBasicAuth(req *http.Request) bool {
_, _, ok := req.BasicAuth()
return m.enabled && ok
Expand Down

0 comments on commit 968c9b7

Please sign in to comment.