Skip to content
Identity Providers

Identity Providers

Use identity providers when users should sign in to Keycloak with an external identity system instead of local usernames and passwords. This is the right fit for social login, corporate SAML or OIDC federation, Kubernetes or OpenShift workload identity, SPIFFE-based trust, and controlled token exchange between clients and external providers.

API Reference

KindAPI GroupTerraformCRD Explorer
IdentityProvideroidc.keycloak.crossplane.io/v1alpha1keycloak_oidc_identity_providerView CRD Schema
GoogleIdentityProvideroidc.keycloak.crossplane.io/v1alpha1keycloak_oidc_google_identity_providerView CRD Schema
IdentityProvidersaml.keycloak.crossplane.io/v1alpha1keycloak_saml_identity_providerView CRD Schema
IdentityProviderMapperidentityprovider.keycloak.crossplane.io/v1alpha1keycloak_custom_identity_provider_mapperView CRD Schema
KubernetesIdentityProvideridentityprovider.keycloak.crossplane.io/v1alpha1keycloak_kubernetes_identity_providerView CRD Schema
OidcOpenShiftV4IdentityProvideridentityprovider.keycloak.crossplane.io/v1alpha1keycloak_oidc_openshift_v4_identity_providerView CRD Schema
SpiffeIdentityProvideridentityprovider.keycloak.crossplane.io/v1alpha1keycloak_spiffe_identity_providerView CRD Schema
ProviderTokenExchangeScopePermissionidentityprovider.keycloak.crossplane.io/v1alpha1keycloak_identity_provider_token_exchange_scope_permissionView CRD Schema

Working YAML examples

OIDC Identity Provider

Use this resource for a generic OpenID Connect identity provider when you need explicit authorization and token endpoints.

apiVersion: oidc.keycloak.crossplane.io/v1alpha1
kind: IdentityProvider
metadata:
  name: oidc-identity-provider
spec:
  deletionPolicy: Delete
  forProvider:
    alias: my-idp
    authorizationUrl: https://authorizationurl.com
    clientIdSecretRef:
      key: client-id
      name: client-secret
      namespace: dev
    clientSecretSecretRef:
      key: client-secret
      name: client-secret
      namespace: dev
    extraConfig:
      clientAuthMethod: client_secret_post
    realmRef:
      name: "dev"
      policy:
        resolve: Always
    tokenUrl: https://tokenurl.com
  providerConfigRef:
    name: "keycloak-provider-config"

OIDC Identity Provider with organization binding

Use organization binding when the external IdP should route users into a specific Keycloak organization.

apiVersion: oidc.keycloak.crossplane.io/v1alpha1
kind: IdentityProvider
metadata:
  name: org-provider
spec:
  deletionPolicy: Delete
  forProvider:
    alias: my-idp
    authorizationUrl: https://authorizationurl.com
    clientIdSecretRef:
      key: client-id
      name: client-secret
      namespace: dev
    clientSecretSecretRef:
      key: client-secret
      name: client-secret
      namespace: dev
    extraConfig:
      clientAuthMethod: client_secret_post
    realmRef:
      name: "orgs"
      policy:
        resolve: Always
    tokenUrl: https://tokenurl.com
    orgDomain: example.com
    orgRedirectModeEmailMatches: true
    organizationIdRef:
      name: example
      policy:
        resolve: Always
  providerConfigRef:
    name: "keycloak-provider-config"

Google Identity Provider

Use the Google-specific CRD when you want the provider defaults and options exposed by keycloak_oidc_google_identity_provider.

apiVersion: oidc.keycloak.crossplane.io/v1alpha1
kind: GoogleIdentityProvider
metadata:
  name: google
spec:
  forProvider:
    alias: google-idp
    clientIdSecretRef:
      key: client-id
      name: client-secret
      namespace: dev
    clientSecretSecretRef:
      key: client-secret
      name: client-secret
      namespace: dev
    hostedDomain: example.com
    realmRef:
      name: "dev"
      policy:
        resolve: Always
    syncMode: IMPORT
    trustEmail: true
  providerConfigRef:
    name: "keycloak-provider-config"

SAML Identity Provider

Use the SAML CRD for enterprise identity providers that publish SAML metadata and SSO/SLO endpoints.

apiVersion: saml.keycloak.crossplane.io/v1alpha1
kind: IdentityProvider
metadata:
  name: saml-identity-provider
spec:
  deletionPolicy: Delete
  forProvider:
    alias: my-saml-idp
    backchannelSupported: true
    entityId: https://domain.com/entity_id
    forceAuthn: true
    postBindingAuthnRequest: true
    postBindingLogout: true
    postBindingResponse: true
    realmRef:
      name: "dev"
      policy:
        resolve: Always
    singleLogoutServiceUrl: https://domain.com/adfs/ls/?wa=wsignout1.0
    singleSignOnServiceUrl: https://domain.com/adfs/ls/
    storeToken: false
    trustEmail: true
  providerConfigRef:
    name: "keycloak-provider-config"

Identity Provider Mapper

Use mappers to transform claims or assertions from the external identity provider into Keycloak user attributes.

apiVersion: identityprovider.keycloak.crossplane.io/v1alpha1
kind: IdentityProviderMapper
metadata:
  name: oidc-identity-provider-mapper
spec:
  deletionPolicy: Delete
  forProvider:
    extraConfig:
      Claim: my-email-claim
      UserAttribute: email
      syncMode: INHERIT
    identityProviderAlias: my-idp
    identityProviderMapper: '%s-user-attribute-idp-mapper'
    name: email-attribute-importer
    realmRef:
      name: "dev"
      policy:
        resolve: Always
  providerConfigRef:
    name: "keycloak-provider-config"

Kubernetes Identity Provider

Use this resource when Kubernetes-issued tokens should be accepted as an external identity source.

apiVersion: identityprovider.keycloak.crossplane.io/v1alpha1
kind: KubernetesIdentityProvider
metadata:
  name: k8s-federated-idp
spec:
  deletionPolicy: Delete
  forProvider:
    alias: k8s-federated
    realmRef:
      name: "orgs"
      policy:
        resolve: Always
    organizationIdRef:
      name: example
      policy:
        resolve: Always
    issuer: https://kubernetes.default.svc
    trustEmail: true
    syncMode: FORCE
    enabled: true
  providerConfigRef:
    name: "keycloak-provider-config"

OpenShift V4 Identity Provider

Use this resource to federate with OpenShift 4 clusters through the provider’s purpose-built OIDC integration.

apiVersion: identityprovider.keycloak.crossplane.io/v1alpha1
kind: OidcOpenShiftV4IdentityProvider
metadata:
  name: openshift-v4-identity-provider
spec:
  deletionPolicy: Delete
  forProvider:
    alias: openshift-v4
    baseUrl: https://openshift.example.com:8443
    clientId: openshift-client
    clientSecretSecretRef:
      key: client-secret
      name: client-secret
      namespace: dev
    defaultScopes: user:full
    realmRef:
      name: "dev"
      policy:
        resolve: Always
    syncMode: IMPORT
    trustEmail: true
  providerConfigRef:
    name: "keycloak-provider-config"

SPIFFE Identity Provider

Use this resource with Keycloak 26.5+ when workload identities should be validated through a SPIFFE trust domain and bundle endpoint.

apiVersion: identityprovider.keycloak.crossplane.io/v1alpha1
kind: SpiffeIdentityProvider
metadata:
  name: spiffe-identity-provider
spec:
  deletionPolicy: Delete
  forProvider:
    alias: spiffe-idp
    bundleEndpoint: https://example.com/spiffe/bundle
    realmRef:
      name: "dev"
      policy:
        resolve: Always
    trustDomain: spiffe://test-domain.example
  providerConfigRef:
    name: "keycloak-provider-config"

Provider Token Exchange Scope Permission

Use token exchange scope permissions when selected clients are allowed to exchange tokens against an external identity provider.

apiVersion: identityprovider.keycloak.crossplane.io/v1alpha1
kind: ProviderTokenExchangeScopePermission
metadata:
  name: token-exchange-permission
spec:
  deletionPolicy: Delete
  forProvider:
    clientsRefs:
      - name: token-exchange-test-client
        policy:
          resolve: Always
    policyType: client
    providerAliasRef:
      name: token-exchange-test-idp
      policy:
        resolve: Always
    realmIdRef:
      name: dev
      policy:
        resolve: Always
  providerConfigRef:
    name: "keycloak-provider-config"

Key fields

Common identity provider fields

FieldApplies toWhy it matters
aliasMost provider CRDsUnique Keycloak alias used by login screens, mappers, and token exchange rules.
realmRef / realmIdRefAll CRDs on this pageSelects the realm that owns the provider or permission.
providerConfigRefAll resourcesPoints at the Crossplane provider configuration used to talk to Keycloak.
enabledProvider CRDsControls whether the provider is active for authentication.
syncModeOIDC, Google, Kubernetes, OpenShift, mappersDecides how external identities are synchronized into Keycloak users.
trustEmailGoogle, SAML, Kubernetes, OpenShiftMarks externally supplied email addresses as trusted.
organizationIdRefOIDC org binding, KubernetesBinds the provider to a Keycloak organization.

Protocol-specific fields

FieldResourceWhy it matters
authorizationUrlOIDC IdentityProviderAuthorization endpoint for the external OIDC provider.
tokenUrlOIDC IdentityProviderToken endpoint used by Keycloak to exchange authorization codes.
clientIdSecretRef / clientSecretSecretRefOIDC, Google, OpenShiftReads client credentials from Kubernetes secrets instead of embedding them in manifests.
entityIdSAML IdentityProviderDeclares the remote SAML IdP entity identifier.
singleSignOnServiceUrlSAML IdentityProviderRemote SAML SSO entrypoint.
singleLogoutServiceUrlSAML IdentityProviderRemote SAML logout endpoint.
identityProviderAliasIdentityProviderMapperAttaches the mapper to a specific provider alias.
extraConfigOIDC providers and mappersHolds provider- or mapper-specific settings such as client auth method or claim mapping.
issuerKubernetesIdentityProviderExpected token issuer for Kubernetes service account tokens.
baseUrlOidcOpenShiftV4IdentityProviderBase URL for the OpenShift cluster’s OIDC endpoints.
bundleEndpointSpiffeIdentityProviderURL that publishes the SPIFFE bundle used for trust validation.
trustDomainSpiffeIdentityProviderSPIFFE trust domain accepted by the identity provider.
providerAliasRefProviderTokenExchangeScopePermissionRefers to the external provider whose tokens may be exchanged.
clientsRefsProviderTokenExchangeScopePermissionLists the Keycloak clients that receive token exchange permission.

Related Resources

  • Organizations — Bind identity providers to Keycloak organizations.
  • Authentication Flows — Redirect users through identity providers as part of custom login flows.
  • Users — Understand how federated identities map to Keycloak user records.