client library for helseid
- Go 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| test | ||
| go.mod | ||
| go.sum | ||
| helseid.go | ||
| helseid_endsession.go | ||
| helseid_keygen.go | ||
| helseid_oid.go | ||
| helseid_par.go | ||
| helseid_test.go | ||
| helseid_token.go | ||
| helseid_userinfo.go | ||
| helseid_validator.go | ||
| http_handlers.go | ||
| http_middleware.go | ||
| http_utils.go | ||
| readme.md | ||
Initialize struct with options
helseid, err := helseid.NewHelseID(&Options{
Config: Config{
BaseUrl: "https://helseid-sts.test.nhn.no",
ApiScopes: []string{"wch:skjerm-api/test"}
ClientID: "",
RedirectUri: "http://localhost:8080/callback",
PrivateKey: your-privatekey-jwk,
},
HttpClient: nil,
SigningMethod: nil,
})
Authorization flow
func requestHandler(hid *helseid.HelseID) http.Handler {
router := http.NewServeMux()
router.Handle("GET /login", helseid.AuthorizationHandler(false, nil))
router.Handle("GET /callback", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // Landingpage specified in the redirecturl
tokenResponse, err := helseid.NewAuthorizationToken(r)
if err != nil {
http.Error(w, err.Error(), http.StatusUnauthorized)
return
}
// Set cookie to manage the refreshtoken lifetime if needed
http.SetCookie(w, tokenResponse.NewCookie())
w.Write([]byte("ok"))
}))
return router
}
Client credentials flow (example)
func printToken(hid *helseid.HelseID) {
tokenResponse, err := hid.NewClientCredentialToken(nil)
if err != nil {
log.Fatal(err)
}
fmt.Println(tokenResponse.AccessToken)
}