diff --git a/server/http.go b/server/http.go index 89a8a5783add9cc7d74612d507f6a24a365083ed..a9d2bc460988711ee30ce2327d89d89ea8b42faf 100644 --- a/server/http.go +++ b/server/http.go @@ -434,7 +434,21 @@ func handleTokenFunc(srv OIDCServer) http.HandlerFunc { return } - creds := oidc.ClientCredentials{ID: user, Secret: password} + decodedUser, err := url.QueryUnescape(user) + if err != nil { + log.Errorf("error decoding user: %v", err) + writeTokenError(w, oauth2.NewError(oauth2.ErrorInvalidClient), state) + return + } + + decodedPassword, err := url.QueryUnescape(password) + if err != nil { + log.Errorf("error decoding password: %v", err) + writeTokenError(w, oauth2.NewError(oauth2.ErrorInvalidClient), state) + return + } + + creds := oidc.ClientCredentials{ID: decodedUser, Secret: decodedPassword} var jwt *jose.JWT var refreshToken string