Merge pull request #1 from zitadel/feat_form_post_client

feat(rp): allow form_post in code exchange callback handler
This commit is contained in:
Ayato 2024-03-05 20:32:16 +09:00 committed by GitHub
commit f01f370074
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -494,9 +494,8 @@ func CodeExchangeHandler[C oidc.IDClaims](callback CodeExchangeCallback[C], rp R
unauthorizedError(w, r, "failed to get state: "+err.Error(), state, rp) unauthorizedError(w, r, "failed to get state: "+err.Error(), state, rp)
return return
} }
params := r.URL.Query() if errValue := r.FormValue("error"); errValue != "" {
if params.Get("error") != "" { rp.ErrorHandler()(w, r, errValue, r.FormValue("error_description"), state)
rp.ErrorHandler()(w, r, params.Get("error"), params.Get("error_description"), state)
return return
} }
codeOpts := make([]CodeExchangeOpt, len(urlParam)) codeOpts := make([]CodeExchangeOpt, len(urlParam))
@ -521,7 +520,7 @@ func CodeExchangeHandler[C oidc.IDClaims](callback CodeExchangeCallback[C], rp R
} }
codeOpts = append(codeOpts, WithClientAssertionJWT(assertion)) codeOpts = append(codeOpts, WithClientAssertionJWT(assertion))
} }
tokens, err := CodeExchange[C](r.Context(), params.Get("code"), rp, codeOpts...) tokens, err := CodeExchange[C](r.Context(), r.FormValue("code"), rp, codeOpts...)
if err != nil { if err != nil {
unauthorizedError(w, r, "failed to exchange token: "+err.Error(), state, rp) unauthorizedError(w, r, "failed to exchange token: "+err.Error(), state, rp)
return return