From edc250a415a9bb2d6bba0e86d63d8046db339713 Mon Sep 17 00:00:00 2001 From: Zhang Zhe <16097046+zzzz0317@users.noreply.github.com> Date: Tue, 18 Feb 2025 13:46:32 +0000 Subject: [PATCH 1/2] fix: oidc token endpoint request body --- controller/auth/oidc.go | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/controller/auth/oidc.go b/controller/auth/oidc.go index 1c4eedbe..e78e9367 100644 --- a/controller/auth/oidc.go +++ b/controller/auth/oidc.go @@ -6,6 +6,7 @@ import ( "errors" "fmt" "net/http" + "net/url" "strconv" "time" @@ -39,22 +40,18 @@ func getOidcUserInfoByCode(code string) (*OidcUser, error) { if code == "" { return nil, errors.New("无效的参数") } - values := map[string]string{ - "client_id": config.OidcClientId, - "client_secret": config.OidcClientSecret, - "code": code, - "grant_type": "authorization_code", - "redirect_uri": fmt.Sprintf("%s/oauth/oidc", config.ServerAddress), - } - jsonData, err := json.Marshal(values) + values := url.Values{} + values.Set("client_id", config.OidcClientId) + values.Set("client_secret", config.OidcClientSecret) + values.Set("code", code) + values.Set("grant_type", "authorization_code") + values.Set("redirect_uri", fmt.Sprintf("%s/oauth/oidc", config.ServerAddress)) + formData := values.Encode() + req, err := http.NewRequest("POST", config.OidcTokenEndpoint, strings.NewReader(formData)) if err != nil { return nil, err } - req, err := http.NewRequest("POST", config.OidcTokenEndpoint, bytes.NewBuffer(jsonData)) - if err != nil { - return nil, err - } - req.Header.Set("Content-Type", "application/json") + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") req.Header.Set("Accept", "application/json") client := http.Client{ Timeout: 5 * time.Second, From 47a8d79b76963b0bc156b9b82c7b39be6da66f15 Mon Sep 17 00:00:00 2001 From: Zhang Zhe <16097046+zzzz0317@users.noreply.github.com> Date: Tue, 18 Feb 2025 13:49:29 +0000 Subject: [PATCH 2/2] fix: oidc token endpoint request body --- controller/auth/oidc.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controller/auth/oidc.go b/controller/auth/oidc.go index e78e9367..9d9d86f7 100644 --- a/controller/auth/oidc.go +++ b/controller/auth/oidc.go @@ -1,7 +1,7 @@ package auth import ( - "bytes" + "strings" "encoding/json" "errors" "fmt"