.. _#ug-appendix-auxilliary-modules:

.. _auxiliary_modules:

Auxiliary Modules
=================

The AMPS distribution provides several modules that extend AMPS with
optional behavior. These modules are *not* loaded by default.

In this release, AMPS includes auxiliary modules that provide the
following functionality:

-  **User-Defined Functions**

   AMPS includes the ``libamps_udf_legacy_compatibility`` module that
   provides date and time handling functions similar to those provided
   by legacy messaging systems.

   AMPS provides a ``libamps_udf_experimental`` module that contains
   special purpose functions.

-  **SOW Key Generation**

   AMPS includes the ``libamps_id_chaining_generator`` module that
   provides chained SOW key generation.

-  **Authentication and Entitlement**

   AMPS includes several modules to help you implement an authentication
   and entitlement system.

   * The ``libamps_http_entitlement`` module makes requests to an
     external web service to validate authentication credentials and
     retrieve the set of applicable entitlements. With this module,
     you can provide both authentication and entitlement infrastructure.

   * The ``libamps_multi_authentication`` module supports multi-mechanism
     authentication. In this release, the module supports both LDAP
     and Kerberos. This module does not provide an entitlements
     implementation.

   * The ``libamps_simple_access_entitlement`` module restricts access
     to specific resources. This module is most often used to provide
     limited access to the AMPS Admin console. This module does not
     provide an authentication implementation, and does not consider
     individual user entitlements -- the restrictions applied by
     this module apply to all users.

-  **Authenticators**

   * AMPS includes a module, ``libamps_multi_authenticator``,  to provide
     credentials for outgoing replication connections. Notice that the default
     authenticator module, which is automatically loaded, can also be
     configured to provide credentials.

   * AMPS includes a module, ``libamps_exec_authenticator``,  that 
     executes an external application and provides the output of
     that process as the credentials for an outgoing replication
     connection.

The auxiliary modules are described in more detail in the following sections.

.. include:: ./legacy_messaging_functions_module.inc

.. include:: ./experimental_udf.inc

.. include:: ./chaining_key_generator_module.inc

.. _#ug-auth-module:

.. include:: ./http_auth_module.inc

..  _#ug-multi-authentication:
.. include:: ./multi_authentication_module.inc

.. include:: ./simple_access_module.inc

.. _#ug-multi-authenticator:

.. include:: ./multi_authenticator_module.inc

..  _#ug-exec-authenticator:

.. include:: ./exec_authenticator_module.inc

