Form Daten per POST senden, Rückgabe ist JSON. Beispiel ist von einer Keycloak Implementierung um einen JWT anzufordern.
package main
import (
"net/http"
"net/url"
"encoding/json"
"fmt"
"log"
)
func main () {
username := "test"
password := "password"
auth_url := "https://localhost:9443"
realm := "test_realm"
// Get JWT Token
form := url.Values{}
form.Add("grant_type", "password")
form.Add("username", username)
form.Add("password", password)
form.Add("client_id", "auth")
hc := http.Client{}
url := fmt.Sprintf("%v/auth/realms/%v/protocol/openid-connect/token", auth_url, realm)
req, err := http.NewRequest("POST", url, strings.NewReader(form.Encode()))
req.PostForm = form
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
resp, err := hc.Do(req)
var res map[string]interface{}
json.NewDecoder(resp.Body).Decode(&res)
token, exists := res["access_token"]
if exists == false {
log.Fatalln("No token")
}
}
