diff --git a/pkg/modules/auth/openid/providers.go b/pkg/modules/auth/openid/providers.go index 7c2c51aff..e97b3615e 100644 --- a/pkg/modules/auth/openid/providers.go +++ b/pkg/modules/auth/openid/providers.go @@ -44,7 +44,18 @@ func GetAllProviders() (providers []*Provider, err error) { rawProvider := rawProviders.([]interface{}) for _, p := range rawProvider { - pi := p.(map[interface{}]interface{}) + var pi map[string]interface{} + var is bool + pi, is = p.(map[string]interface{}) + // JSON config is a map[string]interface{}, other providers are not. Under the hood they are all strings so + // it is save to cast. + if !is { + pis := p.(map[interface{}]interface{}) + pi = make(map[string]interface{}, len(pis)) + for i, s := range pis { + pi[i.(string)] = s + } + } provider, err := getProviderFromMap(pi) if err != nil { @@ -94,7 +105,7 @@ func getKeyFromName(name string) string { return reg.ReplaceAllString(strings.ToLower(name), "") } -func getProviderFromMap(pi map[interface{}]interface{}) (*Provider, error) { +func getProviderFromMap(pi map[string]interface{}) (*Provider, error) { name, is := pi["name"].(string) if !is { return nil, nil