func handleCallbackFunc(c *oidc.Client) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { code := r.URL.Query().Get("code") if code == "" { phttp.WriteError(w, http.StatusBadRequest, "code query param must be set") return } tok, err := c.ExchangeAuthCode(code) if err != nil { phttp.WriteError(w, http.StatusBadRequest, fmt.Sprintf("unable to verify auth code with issuer: %v", err)) return } claims, err := tok.Claims() if err != nil { phttp.WriteError(w, http.StatusBadRequest, fmt.Sprintf("unable to construct claims: %v", err)) return } s := fmt.Sprintf(`<html><body><p>Token: %v</p><p>Claims: %v </p> <a href="/resend?jwt=%s">Resend Verification Email</a> </body></html>`, tok.Encode(), claims, tok.Encode()) w.Write([]byte(s)) } }
func oidcCallback(c *oidc.Client, listenAddr string) (string, chan jose.JWT, error) { tokenChan := make(chan jose.JWT) l, err := net.Listen("tcp", listenAddr) if err != nil { return "", nil, err } oac, err := c.OAuthClient() if err != nil { return "", nil, err } f := func(w http.ResponseWriter, r *http.Request) { code := r.URL.Query().Get("code") if code == "" { return } token, err := c.ExchangeAuthCode(code) if err != nil { fmt.Fprintf(w, "error: %s", err) return } tokenChan <- token close(tokenChan) fmt.Fprintf(w, "Success! You can now close this window and go back to the CLI") l.Close() } go http.Serve(l, http.HandlerFunc(f)) return oac.AuthCodeURL("", "", ""), tokenChan, err }
func handleCallbackFunc(c *oidc.Client) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { code := r.URL.Query().Get("code") if code == "" { writeError(w, http.StatusBadRequest, "code query param must be set") return } tok, err := c.ExchangeAuthCode(code) if err != nil { writeError(w, http.StatusBadRequest, fmt.Sprintf("unable to verify auth code with issuer: %v", err)) return } claims, err := tok.Claims() if err != nil { writeError(w, http.StatusBadRequest, fmt.Sprintf("unable to construct claims: %v", err)) return } s := fmt.Sprintf("claims: %v", claims) w.Write([]byte(s)) } }