ory/kratos · error
provider type is not supported, supported are
Error message
provider type %s is not supported, supported are: %v
What it means
Provider looks up an OIDC provider by ID in the configuration and instantiates the matching provider implementation from supportedProviders. When the provider ID exists but its configured type (p.Provider) has no registered factory, this error is thrown listing the supported types.
Solutions
- Check the config's provider `provider` field for typos; compare against the supported list printed in the error message.
- Use a supported provider type such as generic, google, apple, github, gitlab, etc.
- For an unsupported upstream, use the `generic` OIDC provider type with its issuer_url and client config.
- Upgrade Ory Kratos if the desired provider type exists only in a newer version.
Example fix
// before provider: gogle // after provider: google
Defensive patterns
Strategy: validation
Validate before calling
supported := []string{"generic","google","apple","github","gitlab","microsoft","discord","slack","facebook"}
if !slices.Contains(supported, cfg.Provider) { return fmt.Errorf("unsupported oidc provider type %q", cfg.Provider) } Try / catch
p, err := c.Provider(ctx, id, reg)
if err != nil {
log.WithError(err).Errorf("OIDC provider %s misconfigured; check the 'provider' field", id)
return err
} Prevention
- Copy provider type names exactly from the documented supported list.
- Use schema validation (JSON schema / config lint) for the oidc config section.
- Prefer the `generic` provider type for arbitrary OIDC issuers.
- Re-check config after upgrading Kratos versions.
When it happens
Trigger: Requesting a linked/linkable OIDC provider whose configuration entry has a `provider` value that is not one of the compiled-in supported provider types (e.g. a typo like "gogle", or a provider type added in config but not supported by this build).
Common situations: Typo in oidc provider config `provider` field, using a premium/unsupported provider name, or running a build/version that lacks the provider type referenced in config.
Understand the failure class
Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.
Related errors
- failed to initialize provider
- Private key decoding failed
- no credentials found
- Issuer URL must be set to autodiscover PKCE support
- failed to decode PEM block containing private key
AI-assisted analysis of ory/kratos@b86338da04 (2026-09-07).
Data as JSON: /api/errors/08169902852c1d9b.
Report an issue: GitHub.
Appendix: source
Thrown at selfservice/strategy/oidc/provider_config.go:276
"linkedin_v2": NewProviderLinkedInV2,
"patreon": NewProviderPatreon,
"lark": NewProviderLark,
"x": NewProviderX,
"line": NewProviderLineV21,
"jackson": NewProviderJackson,
"fedcm-test": NewProviderTestFedcm,
"amazon": NewProviderAmazon,
"uaepass": NewProviderUAEPass,
}
func (c ConfigurationCollection) Provider(id string, reg Dependencies) (Provider, error) {
for _, p := range c.Providers {
if p.ID == id {
if f, ok := supportedProviders[p.Provider]; ok {
return f(&p, reg), nil
}
return nil, errors.Errorf("provider type %s is not supported, supported are: %v", p.Provider, maps.Keys(supportedProviders))
}
}
return nil, errors.WithStack(herodot.ErrNotFound().WithReasonf(`OpenID Connect Provider "%s" is unknown or has not been configured`, id))
}
View on GitHub (pinned to b86338da04)