61 lines
1.3 KiB
Go
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
|
|
}
|