Initial import
This commit is contained in:
60
provider/okta/provider.go
Normal file
60
provider/okta/provider.go
Normal file
@@ -0,0 +1,60 @@
|
||||
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
|
||||
}
|
Reference in New Issue
Block a user