Class RESTSigV4AuthManager

java.lang.Object
org.apache.iceberg.aws.RESTSigV4AuthManager
All Implemented Interfaces:
AutoCloseable, AuthManager

public class RESTSigV4AuthManager extends Object implements AuthManager
An AuthManager that authenticates requests with SigV4.

It takes a delegate AuthManager to handle double authentication cases, e.g. on top of OAuth2.

  • Constructor Details

    • RESTSigV4AuthManager

      public RESTSigV4AuthManager(String name, AuthManager delegate)
  • Method Details

    • initSession

      public RESTSigV4AuthSession initSession(RESTClient initClient, Map<String,String> properties)
      Description copied from interface: AuthManager
      Returns a temporary session to use for contacting the configuration endpoint only. Note that the returned session will be closed after the configuration endpoint is contacted, and should not be cached.

      The provided REST client is a short-lived client; it should only be used to fetch initial credentials, if required, and must be discarded after that.

      This method cannot return null. By default, it returns the catalog session.

      Specified by:
      initSession in interface AuthManager
    • catalogSession

      public RESTSigV4AuthSession catalogSession(RESTClient sharedClient, Map<String,String> properties)
      Description copied from interface: AuthManager
      Returns a long-lived session whose lifetime is tied to the owning catalog. This session serves as the parent session for all other sessions (contextual and table-specific). It is closed when the owning catalog is closed.

      The provided REST client is a long-lived, shared client; if required, implementors may store it and reuse it for all subsequent requests to the authorization server, e.g. for renewing or refreshing credentials. It is not necessary to close it when AuthManager.close() is called.

      This method cannot return null.

      It is not required to cache the returned session internally, as the catalog will keep it alive for the lifetime of the catalog.

      Specified by:
      catalogSession in interface AuthManager
    • contextualSession

      public AuthSession contextualSession(SessionCatalog.SessionContext context, AuthSession parent)
      Description copied from interface: AuthManager
      Returns a session for a specific context.

      If the context requires a specific AuthSession, this method should return a new AuthSession instance, otherwise it should return the parent session.

      This method cannot return null. By default, it returns the parent session.

      Implementors should cache contextual sessions internally, as the catalog will not cache them. Also, the owning catalog never closes contextual sessions; implementations should manage their lifecycle themselves and close them when they are no longer needed.

      Specified by:
      contextualSession in interface AuthManager
    • tableSession

      public AuthSession tableSession(TableIdentifier table, Map<String,String> properties, AuthSession parent)
      Description copied from interface: AuthManager
      Returns a new session targeting a specific table or view. The properties are the ones returned by the table/view endpoint.

      If the table or view requires a specific AuthSession, this method should return a new AuthSession instance, otherwise it should return the parent session.

      This method cannot return null. By default, it returns the parent session.

      Implementors should cache table sessions internally, as the catalog will not cache them. Also, the owning catalog never closes table sessions; implementations should manage their lifecycle themselves and close them when they are no longer needed.

      Specified by:
      tableSession in interface AuthManager
    • close

      public void close()
      Description copied from interface: AuthManager
      Closes the manager and releases any resources.

      This method is called when the owning catalog is closed.

      Specified by:
      close in interface AuthManager
      Specified by:
      close in interface AutoCloseable