Skip to content

Commit 66f7b45

Browse files
authored
Merge pull request #156 from smallstep/okta-support
Address support on OIDC provisioners
2 parents 6b2c852 + ba40ce0 commit 66f7b45

File tree

5 files changed

+30
-9
lines changed

5 files changed

+30
-9
lines changed

Gopkg.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

command/oauth/cmd.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ func init() {
132132
},
133133
cli.StringFlag{
134134
Name: "listen",
135-
Usage: "Callback listener URL",
135+
Usage: "Callback listener <address> (e.g. \":10000\")",
136136
},
137137
cli.BoolFlag{
138138
Name: "implicit",
@@ -292,6 +292,11 @@ func (o *options) Validate() error {
292292
if o.Provider != "google" && !strings.HasPrefix(o.Provider, "https://") {
293293
return errors.New("use a valid provider: google")
294294
}
295+
if o.CallbackListener != "" {
296+
if _, _, err := net.SplitHostPort(o.CallbackListener); err != nil {
297+
return errors.Wrapf(err, "invalid value '%s' for flag '--listen'", o.CallbackListener)
298+
}
299+
}
295300
return nil
296301
}
297302

@@ -419,7 +424,14 @@ func (o *oauth) NewServer() (*httptest.Server, error) {
419424
if o.CallbackListener == "" {
420425
return httptest.NewServer(o), nil
421426
}
422-
l, err := net.Listen("tcp", o.CallbackListener)
427+
host, port, err := net.SplitHostPort(o.CallbackListener)
428+
if err != nil {
429+
return nil, err
430+
}
431+
if host == "" {
432+
host = "127.0.0.1"
433+
}
434+
l, err := net.Listen("tcp", net.JoinHostPort(host, port))
423435
if err != nil {
424436
return nil, errors.Wrapf(err, "error listening on %s", o.CallbackListener)
425437
}

token/parse.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ type Payload struct {
4747
IdentityProvider string `json:"idp"`
4848
ObjectID string `json:"oid"`
4949
TenantID string `json:"tid"`
50-
Version string `json:"ver"`
50+
Version interface{} `json:"ver"`
5151
XMSMirID string `json:"xms_mirid"`
5252
Google *GCPGooglePayload `json:"google"` // GCP token claims
5353
Amazon *AWSAmazonPayload `json:"amazon"` // AWS token claims

utils/cautils/offline.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -266,10 +266,16 @@ func (c *OfflineCA) GenerateToken(ctx *cli.Context, typ int, subject string, san
266266

267267
switch p := p.(type) {
268268
case *provisioner.OIDC: // Run step oauth
269-
var out []byte
270-
out, err = exec.Step("oauth", "--oidc", "--bare",
269+
args := []string{"oauth", "--oidc", "--bare",
271270
"--provider", p.ConfigurationEndpoint,
272-
"--client-id", p.ClientID, "--client-secret", p.ClientSecret)
271+
"--client-id", p.ClientID, "--client-secret", p.ClientSecret}
272+
if ctx.Bool("console") {
273+
args = append(args, "--console")
274+
}
275+
if p.ListenAddress != "" {
276+
args = append(args, "--listen", p.ListenAddress)
277+
}
278+
out, err := exec.Step(args...)
273279
if err != nil {
274280
return "", err
275281
}

utils/cautils/token_flow.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,12 @@ func NewTokenFlow(ctx *cli.Context, typ int, subject string, sans []string, caUR
9999
args := []string{"oauth", "--oidc", "--bare",
100100
"--provider", p.ConfigurationEndpoint,
101101
"--client-id", p.ClientID, "--client-secret", p.ClientSecret}
102-
if ctx.IsSet("console") {
102+
if ctx.Bool("console") {
103103
args = append(args, "--console")
104104
}
105+
if p.ListenAddress != "" {
106+
args = append(args, "--listen", p.ListenAddress)
107+
}
105108
out, err := exec.Step(args...)
106109
if err != nil {
107110
return "", err

0 commit comments

Comments
 (0)