mirror of
https://github.com/distribution/distribution.git
synced 2025-08-18 23:07:38 +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, "")
|
vals = append(vals, "")
|
||||||
continue
|
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)
|
vals = append(vals, val)
|
||||||
}
|
}
|
||||||
@ -208,7 +208,7 @@ func checkOptions(options map[string]interface{}) (tokenAccessOptions, error) {
|
|||||||
if ok {
|
if ok {
|
||||||
autoRedirect, ok := autoRedirectVal.(bool)
|
autoRedirect, ok := autoRedirectVal.(bool)
|
||||||
if !ok {
|
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
|
opts.autoRedirect = autoRedirect
|
||||||
}
|
}
|
||||||
@ -217,7 +217,7 @@ func checkOptions(options map[string]interface{}) (tokenAccessOptions, error) {
|
|||||||
if ok {
|
if ok {
|
||||||
autoRedirectPath, ok := autoRedirectPathVal.(string)
|
autoRedirectPath, ok := autoRedirectPathVal.(string)
|
||||||
if !ok {
|
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
|
opts.autoRedirectPath = autoRedirectPath
|
||||||
}
|
}
|
||||||
@ -228,11 +228,19 @@ func checkOptions(options map[string]interface{}) (tokenAccessOptions, error) {
|
|||||||
|
|
||||||
signingAlgos, ok := options["signingalgorithms"]
|
signingAlgos, ok := options["signingalgorithms"]
|
||||||
if ok {
|
if ok {
|
||||||
signingAlgorithmsVals, ok := signingAlgos.([]string)
|
signingAlgorithmsVals, ok := signingAlgos.([]interface{})
|
||||||
if !ok {
|
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
|
return opts, nil
|
||||||
@ -298,11 +306,11 @@ func getJwks(path string) (*jose.JSONWebKeySet, error) {
|
|||||||
func getSigningAlgorithms(algos []string) ([]jose.SignatureAlgorithm, error) {
|
func getSigningAlgorithms(algos []string) ([]jose.SignatureAlgorithm, error) {
|
||||||
signAlgVals := make([]jose.SignatureAlgorithm, 0, len(algos))
|
signAlgVals := make([]jose.SignatureAlgorithm, 0, len(algos))
|
||||||
for _, alg := range algos {
|
for _, alg := range algos {
|
||||||
alg, ok := signingAlgorithms[alg]
|
signAlg, ok := signingAlgorithms[alg]
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("unsupported signing algorithm: %s", alg)
|
return nil, fmt.Errorf("unsupported signing algorithm: %s", alg)
|
||||||
}
|
}
|
||||||
signAlgVals = append(signAlgVals, alg)
|
signAlgVals = append(signAlgVals, signAlg)
|
||||||
}
|
}
|
||||||
return signAlgVals, nil
|
return signAlgVals, nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user