Class ClientCredentialsAccessTokenProvider

java.lang.Object
de.aristaflow.adept2.core.eventmanager.mailevents.ClientCredentialsAccessTokenProvider
All Implemented Interfaces:
OAuth2AccessTokenProvider

@ConfigurationDescription(properties={@Property(name="TokenEndpoint",isRequired=true,description="The HTTP-based endpoint used to acquire the OAuth 2.0 token."),,,,,}) public class ClientCredentialsAccessTokenProvider extends Object implements OAuth2AccessTokenProvider
An implementation of OAuth2AccessTokenProvider that acquires an access token via the OAuth 2.0 client credentials grant.
  • Field Details

    • CONF_TIMEOUT

      public static final String CONF_TIMEOUT
      Configuration key for the HttpClient timeout.
      See Also:
    • CONF_REQUEST_TIMEOUT

      public static final String CONF_REQUEST_TIMEOUT
      Configuration key for the HttpRequest timeout.
      See Also:
    • CONF_TOKEN_ENDPOINT

      public static final String CONF_TOKEN_ENDPOINT
      Configuration key for the token endpoint.
      See Also:
    • CONF_CLIENT_ID

      public static final String CONF_CLIENT_ID
      Configuration key for the client ID.
      See Also:
    • CONF_CLIENT_SECRET

      public static final String CONF_CLIENT_SECRET
      Configuration key for the client secret.
      See Also:
    • CONF_SCOPE

      public static final String CONF_SCOPE
      Configuration key for the scope.
      See Also:
    • tokenEndpoint

      @Deprecated(since="15.3.0", forRemoval=true) protected final URI tokenEndpoint
      Deprecated, for removal: This API element is subject to removal in a future version.
      Use request and requestBuilder instead.
      The token endpoint.
    • postRequestData

      @Deprecated(since="15.3.0", forRemoval=true) protected final HttpRequest.BodyPublisher postRequestData
      Deprecated, for removal: This API element is subject to removal in a future version.
      Use request and requestBuilder instead.
      The data to send as post request to get an OAuth 2.0 access token.
    • clientTimeout

      @Deprecated(since="15.3.0", forRemoval=true) protected final long clientTimeout
      Deprecated, for removal: This API element is subject to removal in a future version.
      Use client and clientBuilder instead.
      The HttpClient timeout.
    • requestTimeout

      @Deprecated(since="15.3.0", forRemoval=true) protected final long requestTimeout
      Deprecated, for removal: This API element is subject to removal in a future version.
      Use request and requestBuilder instead.
      The HttpRequest timeout.
    • clientBuilder

      protected final HttpClient.Builder clientBuilder
      The builder for a new client.
    • requestBuilder

      protected final HttpRequest.Builder requestBuilder
      The builder for a new request.
    • client

      protected volatile HttpClient client
      The currently used client or null if no client has been created or the last request failed.
    • request

      protected volatile HttpRequest request
      The currently used request or null if no request has been created or the last request failed.
  • Constructor Details

    • ClientCredentialsAccessTokenProvider

      public ClientCredentialsAccessTokenProvider(Configuration conf, EventManager em, Registry registry) throws AbortServiceException
      Creates a new provider for an OAuth 2.0 token from a specific endpoint.
      Parameters:
      conf - The configuration of this OAuth 2.0 token provider.
      em - The event manager this provider is a plugin of.
      registry - The registry starting this plugin.
      Throws:
      AbortServiceException - If there are problems creating a URI for the configured endpoint, an AbortServiceException wrapping the corresponding URISyntaxException will be thrown.
  • Method Details

    • createRequestData

      protected HttpRequest.BodyPublisher createRequestData(Configuration conf)
      Creates a HttpRequest.BodyPublisher that turns the values from the designated configuration into appropriate URL-encoded form data.
      Parameters:
      conf - The configuration to get the request data from.
      Returns:
      The designated data as URL-encoded form data.
    • getAccessToken

      public String getAccessToken() throws jakarta.mail.MessagingException
      Description copied from interface: OAuth2AccessTokenProvider
      Gets an OAuth2 access token for accessing the mailbox.
      Specified by:
      getAccessToken in interface OAuth2AccessTokenProvider
      Returns:
      An OAuth2 access token for accessing the mailbox
      Throws:
      jakarta.mail.MessagingException - If there are problems retrieving the access token, a MessagingException will be thrown.