Files
conduit/provider/okta/provider.go
2025-10-10 10:05:28 +02:00

61 lines
1.3 KiB
Go

package okta
import (
"context"
"fmt"
"github.com/hashicorp/hcl/v2"
"github.com/hashicorp/hcl/v2/gohcl"
"github.com/okta/okta-sdk-golang/okta"
"git.maze.io/maze/conduit/provider"
)
func init() {
provider.Register(&provider.Config{
Name: "okta",
Init: setup,
})
}
var (
configuration []okta.ConfigSetter
client *okta.Client
)
func setup(body hcl.Body) (err error) {
var config struct {
Client struct {
OrgURL string `hcl:"org_url"`
Token string `hcl:"token,optional"`
ClientID string `hcl:"client_id"`
PrivateKey string `hcl:"private_key,optional"`
JWT string `hcl:"jwt,optional"`
} `hcl:"client,block"`
}
if diag := gohcl.DecodeBody(body, nil, &config); diag.HasErrors() {
return diag
}
configuration = []okta.ConfigSetter{
okta.WithOrgUrl(config.Client.OrgURL),
okta.WithClientId(config.Client.ClientID),
}
if config.Client.Token != "" {
configuration = append(configuration, okta.WithToken(config.Client.Token))
}
if config.Client.PrivateKey != "" {
configuration = append(configuration, okta.WithPrivateKey(config.Client.PrivateKey))
}
if client, err = okta.NewClient(context.TODO(), configuration...); err != nil {
return fmt.Errorf("okta: %w", err)
}
if _, _, err = client.User.ListUsers(nil); err != nil {
return fmt.Errorf("okta: %w", err)
}
return
}