From 71886c2f3e1833f113701d3f76a0eeb60f10192a Mon Sep 17 00:00:00 2001 From: Simon Murray Date: Wed, 26 Feb 2025 11:14:18 +0000 Subject: [PATCH] OIDC Conformance Fixes (#211) --- charts/identity/Chart.yaml | 4 +- pkg/handler/handler.go | 26 +++ pkg/oauth2/oauth2.go | 4 + pkg/openapi/schema.go | 422 +++++++++++++++++------------------ pkg/openapi/server.spec.yaml | 3 - pkg/openapi/types.go | 2 +- 6 files changed, 244 insertions(+), 217 deletions(-) diff --git a/charts/identity/Chart.yaml b/charts/identity/Chart.yaml index 59fc8f62..138a2a1d 100644 --- a/charts/identity/Chart.yaml +++ b/charts/identity/Chart.yaml @@ -4,8 +4,8 @@ description: A Helm chart for deploying Unikorn's IdP type: application -version: v0.2.58-rc7 -appVersion: v0.2.58-rc7 +version: v0.2.58-rc8 +appVersion: v0.2.58-rc8 icon: https://raw.githubusercontent.com/unikorn-cloud/assets/main/images/logos/dark-on-light/icon.png diff --git a/pkg/handler/handler.go b/pkg/handler/handler.go index 65152a3c..e9862249 100644 --- a/pkg/handler/handler.go +++ b/pkg/handler/handler.go @@ -22,6 +22,7 @@ import ( "fmt" "net/http" "slices" + "strings" "github.com/unikorn-cloud/core/pkg/server/errors" "github.com/unikorn-cloud/core/pkg/server/util" @@ -178,6 +179,31 @@ func (h *Handler) GetOauth2V2Userinfo(w http.ResponseWriter, r *http.Request) { } func (h *Handler) PostOauth2V2Userinfo(w http.ResponseWriter, r *http.Request) { + if header := r.Header.Get("Authorization"); header != "" { + parts := strings.Split(header, " ") + + if len(parts) != 2 { + errors.HandleError(w, r, errors.OAuth2InvalidRequest("authorization header malformed")) + return + } + + if !strings.EqualFold(parts[0], "bearer") { + errors.HandleError(w, r, errors.OAuth2InvalidRequest("authorization scheme not allowed")) + return + } + + userinfo, _, err := h.oauth2.GetUserinfo(r.Context(), r, parts[1]) + if err != nil { + errors.HandleError(w, r, errors.OAuth2AccessDenied("access token is invalid").WithError(err)) + return + } + + h.setUncacheable(w) + util.WriteJSONResponse(w, r, http.StatusOK, userinfo) + + return + } + if err := r.ParseForm(); err != nil { errors.HandleError(w, r, errors.OAuth2InvalidRequest("unable to parse form data").WithError(err)) return diff --git a/pkg/oauth2/oauth2.go b/pkg/oauth2/oauth2.go index 71adc01a..ead0cfcc 100644 --- a/pkg/oauth2/oauth2.go +++ b/pkg/oauth2/oauth2.go @@ -148,6 +148,7 @@ const ( ErrorServerError Error = "server_error" ErrorLoginRequired Error = "login_required" ErrorRequestNotSupported Error = "request_not_supported" + ErrorInteractionRequired Error = "interaction_required" ) // State records state across the call to the authorization server. @@ -389,6 +390,9 @@ func authorizationValidateRedirecting(w http.ResponseWriter, r *http.Request, qu var description string switch { + case query.Get("prompt") == "none": + kind = ErrorInteractionRequired + description = "prompt=none is not supported" case query.Has("request"): kind = ErrorRequestNotSupported description = "request object by value not supported" diff --git a/pkg/openapi/schema.go b/pkg/openapi/schema.go index 4d312887..e1d92b28 100644 --- a/pkg/openapi/schema.go +++ b/pkg/openapi/schema.go @@ -63,217 +63,217 @@ var swaggerSpec = []string{ "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/pkg/openapi/server.spec.yaml b/pkg/openapi/server.spec.yaml index 383d434d..32e0103b 100644 --- a/pkg/openapi/server.spec.yaml +++ b/pkg/openapi/server.spec.yaml @@ -1174,8 +1174,6 @@ components: userinfoRequestOptions: description: A userinfo POST request. type: object - required: - - access_token properties: access_token: description: The oauth2 access token. @@ -1936,7 +1934,6 @@ components: scope: openid userinfoRequest: description: OIDC userinfo. - required: true content: application/x-www-form-urlencoded: schema: diff --git a/pkg/openapi/types.go b/pkg/openapi/types.go index 1c2de767..92c970c9 100644 --- a/pkg/openapi/types.go +++ b/pkg/openapi/types.go @@ -743,7 +743,7 @@ type Userinfo struct { // UserinfoRequestOptions A userinfo POST request. type UserinfoRequestOptions struct { // AccessToken The oauth2 access token. - AccessToken string `json:"access_token"` + AccessToken *string `json:"access_token,omitempty"` } // Users A list of users.