Skip to content

Commit

Permalink
Add timeout to OIDC discovery
Browse files Browse the repository at this point in the history
Limit HTTP requests to OIDC discovery endpoints to 10 seconds before
cancelling and returning an error

Signed-off-by: Nathan Smith <nathan@chainguard.dev>
  • Loading branch information
Nathan Smith committed May 6, 2022
1 parent 152c20d commit 95c9df9
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions pkg/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,15 @@ import (
"os"
"regexp"
"strings"
"time"

"github.com/coreos/go-oidc/v3/oidc"
lru "github.com/hashicorp/golang-lru"
"github.com/sigstore/fulcio/pkg/log"
)

const defaultOIDCDiscoveryTimeout = 10 * time.Second

type FulcioConfig struct {
OIDCIssuers map[string]OIDCIssuer `json:"OIDCIssuers,omitempty"`

Expand Down Expand Up @@ -132,7 +135,9 @@ func (fc *FulcioConfig) GetVerifier(issuerURL string) (*oidc.IDTokenVerifier, bo
return nil, false
}

provider, err := oidc.NewProvider(context.Background(), issuerURL)
ctx, cancel := context.WithTimeout(context.Background(), defaultOIDCDiscoveryTimeout)
defer cancel()
provider, err := oidc.NewProvider(ctx, issuerURL)
if err != nil {
log.Logger.Warnf("Failed to create provider for issuer URL %q: %v", issuerURL, err)
return nil, false
Expand All @@ -145,7 +150,9 @@ func (fc *FulcioConfig) GetVerifier(issuerURL string) (*oidc.IDTokenVerifier, bo
func (fc *FulcioConfig) prepare() error {
fc.verifiers = make(map[string]*oidc.IDTokenVerifier, len(fc.OIDCIssuers))
for _, iss := range fc.OIDCIssuers {
provider, err := oidc.NewProvider(context.Background(), iss.IssuerURL)
ctx, cancel := context.WithTimeout(context.Background(), defaultOIDCDiscoveryTimeout)
defer cancel()
provider, err := oidc.NewProvider(ctx, iss.IssuerURL)
if err != nil {
return fmt.Errorf("provider %s: %w", iss.IssuerURL, err)
}
Expand Down

0 comments on commit 95c9df9

Please sign in to comment.