Class AttestationBasedClientAuthenticator

java.lang.Object
org.keycloak.authentication.authenticators.client.AbstractClientAuthenticator
org.keycloak.authentication.authenticators.client.AttestationBasedClientAuthenticator
All Implemented Interfaces:
org.keycloak.authentication.ClientAuthenticator, org.keycloak.authentication.ClientAuthenticatorFactory, org.keycloak.authentication.ConfigurableAuthenticatorFactory, org.keycloak.provider.ConfiguredPerClientProvider, org.keycloak.provider.ConfiguredProvider, org.keycloak.provider.EnvironmentDependentProviderFactory, org.keycloak.provider.Provider, org.keycloak.provider.ProviderFactory<org.keycloak.authentication.ClientAuthenticator>

public class AttestationBasedClientAuthenticator extends AbstractClientAuthenticator implements org.keycloak.provider.EnvironmentDependentProviderFactory
Attestation-Based Client Authentication based on Client Attestation JWT and PoP. See specs for more details. The current implementation aligns with HAIP Profile 1.0 specifically Attestation-Based Client Authentication - Draft07
Author:
Thomas Diesler
  • Field Details

    • PROVIDER_ID

      public static final String PROVIDER_ID
      See Also:
    • OAUTH_CLIENT_ATTESTATION_HEADER

      public static final String OAUTH_CLIENT_ATTESTATION_HEADER
      See Also:
    • OAUTH_CLIENT_ATTESTATION_POP_HEADER

      public static final String OAUTH_CLIENT_ATTESTATION_POP_HEADER
      See Also:
    • OAUTH_CLIENT_ATTESTATION_JWT_TYPE

      public static final String OAUTH_CLIENT_ATTESTATION_JWT_TYPE
      See Also:
    • OAUTH_CLIENT_ATTESTATION_POP_JWT_TYPE

      public static final String OAUTH_CLIENT_ATTESTATION_POP_JWT_TYPE
      See Also:
    • OAUTH_CLIENT_ATTESTATION_CONFIG_TRUST_IDPS

      public static final String OAUTH_CLIENT_ATTESTATION_CONFIG_TRUST_IDPS
      Comma-separated aliases of trust-material identity providers that expose the trusted attester keys.
      See Also:
    • ABCA_JKT_TYPE

      public static final String ABCA_JKT_TYPE
      The token confirmation type
      See Also:
  • Constructor Details

    • AttestationBasedClientAuthenticator

      public AttestationBasedClientAuthenticator()
  • Method Details

    • getId

      public String getId()
      Specified by:
      getId in interface org.keycloak.provider.ProviderFactory<org.keycloak.authentication.ClientAuthenticator>
    • authenticateClient

      public void authenticateClient(org.keycloak.authentication.ClientAuthenticationFlowContext context)
      Specified by:
      authenticateClient in interface org.keycloak.authentication.ClientAuthenticator
    • getDisplayType

      public String getDisplayType()
      Specified by:
      getDisplayType in interface org.keycloak.authentication.ConfigurableAuthenticatorFactory
    • getHelpText

      public String getHelpText()
      Specified by:
      getHelpText in interface org.keycloak.provider.ConfiguredProvider
    • getRequirementChoices

      public org.keycloak.models.AuthenticationExecutionModel.Requirement[] getRequirementChoices()
      Specified by:
      getRequirementChoices in interface org.keycloak.authentication.ConfigurableAuthenticatorFactory
    • isConfigurable

      public boolean isConfigurable()
      Specified by:
      isConfigurable in interface org.keycloak.authentication.ClientAuthenticatorFactory
      Specified by:
      isConfigurable in interface org.keycloak.authentication.ConfigurableAuthenticatorFactory
    • getConfigProperties

      public List<org.keycloak.provider.ProviderConfigProperty> getConfigProperties()
      Specified by:
      getConfigProperties in interface org.keycloak.provider.ConfiguredProvider
    • getConfigPropertiesPerClient

      public List<org.keycloak.provider.ProviderConfigProperty> getConfigPropertiesPerClient()
      Specified by:
      getConfigPropertiesPerClient in interface org.keycloak.provider.ConfiguredPerClientProvider
    • getAdapterConfiguration

      public Map<String,Object> getAdapterConfiguration(org.keycloak.models.KeycloakSession session, org.keycloak.models.ClientModel client)
      Specified by:
      getAdapterConfiguration in interface org.keycloak.authentication.ClientAuthenticatorFactory
    • isSupported

      public boolean isSupported(org.keycloak.Config.Scope config)
      Specified by:
      isSupported in interface org.keycloak.provider.EnvironmentDependentProviderFactory
    • getProtocolAuthenticatorMethods

      public Set<String> getProtocolAuthenticatorMethods(String loginProtocol)
      Specified by:
      getProtocolAuthenticatorMethods in interface org.keycloak.authentication.ClientAuthenticatorFactory