Class AbstractIdentityBackend

java.lang.Object
org.apache.kerby.config.Configured
org.apache.kerby.kerberos.kerb.identity.backend.AbstractIdentityBackend
All Implemented Interfaces:
org.apache.kerby.config.Configurable, IdentityBackend, IdentityService
Direct Known Subclasses:
MemoryIdentityBackend

public abstract class AbstractIdentityBackend extends org.apache.kerby.config.Configured implements IdentityBackend
An abstract identity backend that provides default behaviors and a cache with FIFO and size limit. Note only limited recently active identities are kept in the cache, and other identities are meant to be loaded from persistent storage by specific backend, like memory, file, SQL DB, LDAP, and etc.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    org.apache.kerby.kerberos.kerb.request.KrbIdentity
    addIdentity(org.apache.kerby.kerberos.kerb.request.KrbIdentity identity)
    Add an identity, and return the newly created result.
    void
    deleteIdentity(String principalName)
    Delete the identity specified by principal name
    protected abstract org.apache.kerby.kerberos.kerb.request.KrbIdentity
    doAddIdentity(org.apache.kerby.kerberos.kerb.request.KrbIdentity identity)
    Add an identity, invoked by addIdentity, and return added identity.
    protected abstract void
    doDeleteIdentity(String principalName)
    Delete an identity, invoked by deleteIndentity.
    protected abstract Iterable<String>
    Perform the real work to get identities.
    protected abstract org.apache.kerby.kerberos.kerb.request.KrbIdentity
    doGetIdentity(String principalName)
    Add an identity, invoked by addIdentity.
    protected org.apache.kerby.kerberos.kerb.type.ad.AuthorizationData
    doGetIdentityAuthorizationData(org.apache.kerby.kerberos.kerb.request.KdcClientRequest kdcClientRequest, org.apache.kerby.kerberos.kerb.type.ticket.EncTicketPart encTicketPart)
    Get an identity's Authorization Data, invoked by getIdentityAuthorizationData.
    protected void
    Perform the real initialization work for the backend.
    protected void
    Perform the real release work for the backend.
    protected void
    Perform the real start work for the backend.
    protected void
    Perform the real stop work for the backend.
    protected abstract org.apache.kerby.kerberos.kerb.request.KrbIdentity
    doUpdateIdentity(org.apache.kerby.kerberos.kerb.request.KrbIdentity identity)
    Update an identity, invoked by updateIdentity, and return updated identity.
    protected BackendConfig
    Get the Backend Config.
    Get all of the identity principal names.
    org.apache.kerby.kerberos.kerb.request.KrbIdentity
    getIdentity(String principalName)
    Get the identity account specified by name.
    org.apache.kerby.kerberos.kerb.type.ad.AuthorizationData
    getIdentityAuthorizationData(org.apache.kerby.kerberos.kerb.request.KdcClientRequest kdcClientRequest, org.apache.kerby.kerberos.kerb.type.ticket.EncTicketPart encTicketPart)
    Get an identity's Authorization Data.
    void
    Init work for the backend can be done here.
    void
    Release the backend associated resources like connection.
    void
    Start the backend and return soon after the backend or the connection to it is well prepared and ready for KDC to use.
    Start a transaction.
    void
    Stop the backend.
    boolean
    Query to know if xtrans is supported or not.
    org.apache.kerby.kerberos.kerb.request.KrbIdentity
    updateIdentity(org.apache.kerby.kerberos.kerb.request.KrbIdentity identity)
    Update an identity, and return the updated result.

    Methods inherited from class org.apache.kerby.config.Configured

    getConfig, setConfig

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.apache.kerby.config.Configurable

    getConfig, setConfig
  • Constructor Details

    • AbstractIdentityBackend

      public AbstractIdentityBackend()
  • Method Details

    • getBackendConfig

      protected BackendConfig getBackendConfig()
      Get the Backend Config.
      Returns:
      The backend config
    • initialize

      public void initialize() throws org.apache.kerby.kerberos.kerb.KrbException
      Init work for the backend can be done here.
      Specified by:
      initialize in interface IdentityBackend
      Throws:
      org.apache.kerby.kerberos.kerb.KrbException - e
    • supportBatchTrans

      public boolean supportBatchTrans()
      Query to know if xtrans is supported or not.
      Specified by:
      supportBatchTrans in interface IdentityService
      Returns:
      true if supported, false otherwise
    • startBatchTrans

      public BatchTrans startBatchTrans() throws org.apache.kerby.kerberos.kerb.KrbException
      Start a transaction.
      Specified by:
      startBatchTrans in interface IdentityService
      Returns:
      xtrans The batch trans
      Throws:
      org.apache.kerby.kerberos.kerb.KrbException - e
    • doInitialize

      protected void doInitialize() throws org.apache.kerby.kerberos.kerb.KrbException
      Perform the real initialization work for the backend.
      Throws:
      org.apache.kerby.kerberos.kerb.KrbException - e
    • start

      public void start()
      Start the backend and return soon after the backend or the connection to it is well prepared and ready for KDC to use. Will be called during KDC startup.
      Specified by:
      start in interface IdentityBackend
    • doStart

      protected void doStart()
      Perform the real start work for the backend.
    • stop

      public void stop() throws org.apache.kerby.kerberos.kerb.KrbException
      Stop the backend. Will be called during KDC stop.
      Specified by:
      stop in interface IdentityBackend
      Throws:
      org.apache.kerby.kerberos.kerb.KrbException - e
    • doStop

      protected void doStop() throws org.apache.kerby.kerberos.kerb.KrbException
      Perform the real stop work for the backend.
      Throws:
      org.apache.kerby.kerberos.kerb.KrbException - e
    • release

      public void release()
      Release the backend associated resources like connection. Will be called during KDC shutdown.
      Specified by:
      release in interface IdentityBackend
    • doRelease

      protected void doRelease()
      Perform the real release work for the backend.
    • getIdentities

      public Iterable<String> getIdentities() throws org.apache.kerby.kerberos.kerb.KrbException
      Get all of the identity principal names. Note it's ordered by principal name.
      Specified by:
      getIdentities in interface IdentityService
      Returns:
      principal names
      Throws:
      org.apache.kerby.kerberos.kerb.KrbException - e
    • doGetIdentities

      protected abstract Iterable<String> doGetIdentities() throws org.apache.kerby.kerberos.kerb.KrbException
      Perform the real work to get identities.
      Returns:
      The identities
      Throws:
      org.apache.kerby.kerberos.kerb.KrbException - e
    • getIdentity

      public org.apache.kerby.kerberos.kerb.request.KrbIdentity getIdentity(String principalName) throws org.apache.kerby.kerberos.kerb.KrbException
      Get the identity account specified by name.
      Specified by:
      getIdentity in interface IdentityService
      Parameters:
      principalName - The principal name
      Returns:
      identity
      Throws:
      org.apache.kerby.kerberos.kerb.KrbException - e
    • doGetIdentity

      protected abstract org.apache.kerby.kerberos.kerb.request.KrbIdentity doGetIdentity(String principalName) throws org.apache.kerby.kerberos.kerb.KrbException
      Add an identity, invoked by addIdentity.
      Parameters:
      principalName - The principal name
      Returns:
      The added identity
      Throws:
      org.apache.kerby.kerberos.kerb.KrbException - e
    • getIdentityAuthorizationData

      public org.apache.kerby.kerberos.kerb.type.ad.AuthorizationData getIdentityAuthorizationData(org.apache.kerby.kerberos.kerb.request.KdcClientRequest kdcClientRequest, org.apache.kerby.kerberos.kerb.type.ticket.EncTicketPart encTicketPart) throws org.apache.kerby.kerberos.kerb.KrbException
      Get an identity's Authorization Data.
      Specified by:
      getIdentityAuthorizationData in interface IdentityService
      Parameters:
      kdcClientRequest - The KdcClientRequest
      encTicketPart - The EncTicketPart being built for the KrbIdentity
      Returns:
      The Authorization Data
      Throws:
      org.apache.kerby.kerberos.kerb.KrbException - e
    • doGetIdentityAuthorizationData

      protected org.apache.kerby.kerberos.kerb.type.ad.AuthorizationData doGetIdentityAuthorizationData(org.apache.kerby.kerberos.kerb.request.KdcClientRequest kdcClientRequest, org.apache.kerby.kerberos.kerb.type.ticket.EncTicketPart encTicketPart) throws org.apache.kerby.kerberos.kerb.KrbException
      Get an identity's Authorization Data, invoked by getIdentityAuthorizationData.
      Parameters:
      kdcClientRequest - The KdcClientRequest
      encTicketPart - The EncTicketPart being built for the KrbIdentity
      Returns:
      The Authorization Data
      Throws:
      org.apache.kerby.kerberos.kerb.KrbException - e
    • addIdentity

      public org.apache.kerby.kerberos.kerb.request.KrbIdentity addIdentity(org.apache.kerby.kerberos.kerb.request.KrbIdentity identity) throws org.apache.kerby.kerberos.kerb.KrbException
      Add an identity, and return the newly created result.
      Specified by:
      addIdentity in interface IdentityService
      Parameters:
      identity - The identity
      Returns:
      identity
      Throws:
      org.apache.kerby.kerberos.kerb.KrbException - e
    • doAddIdentity

      protected abstract org.apache.kerby.kerberos.kerb.request.KrbIdentity doAddIdentity(org.apache.kerby.kerberos.kerb.request.KrbIdentity identity) throws org.apache.kerby.kerberos.kerb.KrbException
      Add an identity, invoked by addIdentity, and return added identity.
      Parameters:
      identity - The identity to be added
      Returns:
      The added identity
      Throws:
      org.apache.kerby.kerberos.kerb.KrbException - e
    • updateIdentity

      public org.apache.kerby.kerberos.kerb.request.KrbIdentity updateIdentity(org.apache.kerby.kerberos.kerb.request.KrbIdentity identity) throws org.apache.kerby.kerberos.kerb.KrbException
      Update an identity, and return the updated result.
      Specified by:
      updateIdentity in interface IdentityService
      Parameters:
      identity - The identity
      Returns:
      identity
      Throws:
      org.apache.kerby.kerberos.kerb.KrbException - e
    • doUpdateIdentity

      protected abstract org.apache.kerby.kerberos.kerb.request.KrbIdentity doUpdateIdentity(org.apache.kerby.kerberos.kerb.request.KrbIdentity identity) throws org.apache.kerby.kerberos.kerb.KrbException
      Update an identity, invoked by updateIdentity, and return updated identity.
      Parameters:
      identity - The origin identity
      Returns:
      The updated identity
      Throws:
      org.apache.kerby.kerberos.kerb.KrbException - e
    • deleteIdentity

      public void deleteIdentity(String principalName) throws org.apache.kerby.kerberos.kerb.KrbException
      Delete the identity specified by principal name
      Specified by:
      deleteIdentity in interface IdentityService
      Parameters:
      principalName - The principal name
      Throws:
      org.apache.kerby.kerberos.kerb.KrbException - e
    • doDeleteIdentity

      protected abstract void doDeleteIdentity(String principalName) throws org.apache.kerby.kerberos.kerb.KrbException
      Delete an identity, invoked by deleteIndentity.
      Parameters:
      principalName - The principal name
      Throws:
      org.apache.kerby.kerberos.kerb.KrbException - e