diff --git a/cmd/config.go b/cmd/config.go index 260bc6a..b8270fd 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -1,9 +1,9 @@ package cmd import ( - "davidallendj/opal/internal/oauth" - "davidallendj/opal/internal/oidc" - "davidallendj/opal/internal/util" + "davidallendj/opaal/internal/oauth" + "davidallendj/opaal/internal/oidc" + "davidallendj/opaal/internal/util" "fmt" "log" "os" diff --git a/cmd/login.go b/cmd/login.go index 5f1a11a..6625785 100644 --- a/cmd/login.go +++ b/cmd/login.go @@ -107,11 +107,11 @@ var loginCmd = &cobra.Command{ } // fetch JWKS and add issuer to authentication server to submit ID token - jwk, err := api.FetchJwk("") + err = idp.FetchJwk("") if err != nil { fmt.Printf("failed to fetch JWK: %v\n", err) } else { - api.AddTrustedIssuer(config.AuthEndpoints.TrustedIssuers, jwk.(string)) + api.AddTrustedIssuer(config.AuthEndpoints.TrustedIssuers, idp.Key) } // use ID token/user info to fetch access token from authentication server diff --git a/internal/api/api.go b/internal/api/api.go index 3f844b1..b282907 100644 --- a/internal/api/api.go +++ b/internal/api/api.go @@ -9,6 +9,8 @@ import ( "net/url" "strings" "time" + + "github.com/lestrrat-go/jwx/jwk" ) func WaitForAuthorizationCode(serverAddr string, loginUrl string) (string, error) { @@ -78,7 +80,7 @@ func FetchAccessToken(remoteUrl string, clientId string, jwt string, scopes []st return token, nil } -func AddTrustedIssuer(remoteUrl string, issuer string, subject string, duration time.Duration, jwk string, scope []string) error { +func AddTrustedIssuer(remoteUrl string, issuer string, subject string, duration time.Duration, jwk jwk.Key, scope []string) error { // hydra endpoint: /admin/trust/grants/jwt-bearer/issuers data := []byte(fmt.Sprintf(`{ "allow_any_subject": false, @@ -87,7 +89,7 @@ func AddTrustedIssuer(remoteUrl string, issuer string, subject string, duration "expires_at": "%v" "jwk": %v, "scope": [ j%s ], - }`, issuer, subject, time.Now().Add(duration), jwk, strings.Join(scope, ","))) + }`, issuer, subject, time.Now().Add(duration), string(jwk), strings.Join(scope, ","))) req, err := http.NewRequest("POST", remoteUrl, bytes.NewBuffer(data)) if err != nil {