mirror of
https://github.com/distribution/distribution.git
synced 2025-04-27 19:15:28 +00:00
Fix broken signing algorithm configuration for token authentication (#4578)
This commit is contained in:
commit
9e96aec357
@ -197,7 +197,7 @@ func checkOptions(options map[string]interface{}) (tokenAccessOptions, error) {
|
||||
vals = append(vals, "")
|
||||
continue
|
||||
}
|
||||
return opts, fmt.Errorf("token auth requires a valid option string: %q", key)
|
||||
return tokenAccessOptions{}, fmt.Errorf("token auth requires a valid option string: %q", key)
|
||||
}
|
||||
vals = append(vals, val)
|
||||
}
|
||||
@ -208,7 +208,7 @@ func checkOptions(options map[string]interface{}) (tokenAccessOptions, error) {
|
||||
if ok {
|
||||
autoRedirect, ok := autoRedirectVal.(bool)
|
||||
if !ok {
|
||||
return opts, errors.New("token auth requires a valid option bool: autoredirect")
|
||||
return tokenAccessOptions{}, errors.New("token auth requires a valid option bool: autoredirect")
|
||||
}
|
||||
opts.autoRedirect = autoRedirect
|
||||
}
|
||||
@ -217,7 +217,7 @@ func checkOptions(options map[string]interface{}) (tokenAccessOptions, error) {
|
||||
if ok {
|
||||
autoRedirectPath, ok := autoRedirectPathVal.(string)
|
||||
if !ok {
|
||||
return opts, errors.New("token auth requires a valid option string: autoredirectpath")
|
||||
return tokenAccessOptions{}, errors.New("token auth requires a valid option string: autoredirectpath")
|
||||
}
|
||||
opts.autoRedirectPath = autoRedirectPath
|
||||
}
|
||||
@ -228,11 +228,19 @@ func checkOptions(options map[string]interface{}) (tokenAccessOptions, error) {
|
||||
|
||||
signingAlgos, ok := options["signingalgorithms"]
|
||||
if ok {
|
||||
signingAlgorithmsVals, ok := signingAlgos.([]string)
|
||||
signingAlgorithmsVals, ok := signingAlgos.([]interface{})
|
||||
if !ok {
|
||||
return opts, errors.New("signingalgorithms must be a list of signing algorithms")
|
||||
return tokenAccessOptions{}, errors.New("signingalgorithms must be a list of signing algorithms")
|
||||
}
|
||||
|
||||
for _, signingAlgorithmVal := range signingAlgorithmsVals {
|
||||
signingAlgorithm, ok := signingAlgorithmVal.(string)
|
||||
if !ok {
|
||||
return tokenAccessOptions{}, errors.New("signingalgorithms must be a list of signing algorithms")
|
||||
}
|
||||
|
||||
opts.signingAlgorithms = append(opts.signingAlgorithms, signingAlgorithm)
|
||||
}
|
||||
opts.signingAlgorithms = signingAlgorithmsVals
|
||||
}
|
||||
|
||||
return opts, nil
|
||||
@ -298,11 +306,11 @@ func getJwks(path string) (*jose.JSONWebKeySet, error) {
|
||||
func getSigningAlgorithms(algos []string) ([]jose.SignatureAlgorithm, error) {
|
||||
signAlgVals := make([]jose.SignatureAlgorithm, 0, len(algos))
|
||||
for _, alg := range algos {
|
||||
alg, ok := signingAlgorithms[alg]
|
||||
signAlg, ok := signingAlgorithms[alg]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("unsupported signing algorithm: %s", alg)
|
||||
}
|
||||
signAlgVals = append(signAlgVals, alg)
|
||||
signAlgVals = append(signAlgVals, signAlg)
|
||||
}
|
||||
return signAlgVals, nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user