.. lrf1583447064969
.. _obtain-the-authentication-token-using-the-oidc-auth-shell-script:

================================================================
Obtain the Authentication Token Using the oidc-auth Shell Script
================================================================

You can obtain the authentication token using the **oidc-auth** shell script.

.. rubric:: |context|

You can use the **oidc-auth** script both locally on the active controller,
as well as on a remote workstation where you are running **kubectl** and
**helm** commands.

The **oidc-auth** script retrieves the ID token from Windows Active
Directory using the |OIDC| client, and **dex**, and updates the Kubernetes
credential for the user in the **kubectl** config file.


.. _obtain-the-authentication-token-using-the-oidc-auth-shell-script-ul-kxm-qnf-ykb:

-   On controller-0, **oidc-auth** is installed as part of the base |prod|
    installation, and ready to use.

-   On remote hosts, **oidc-auth** must be installed from |dnload-loc|.

.. xbooklink

   -   On a remote workstation using remote-cli container, **oidc-auth** is
        installed within the remote-cli container, and ready to use. For more
        information on configuring remote CLI access, see |sysconf-doc|:
        :ref:`Configure Remote CLI Access <configure-remote-cli-access>`.

-   On a remote host, when using directly installed **kubectl** and **helm**,
    the following setup is required:


    -   Install "Python Mechanize" module using the following command:

        .. code-block:: none

            sudo pip2 install mechanize


.. note::
    **oidc-auth** script supports authenticating with a |prod|
    **oidc-auth-apps** configured with single, or multiple **ldap**
    connectors.

.. rubric:: |proc|

#.  Run **oidc-auth** script in order to authenticate and update user
    credentials in **kubectl** config file with the retrieved token.


    -   If **oidc-auth-apps** is deployed with a single backend **ldap**
        connector, run the following command:

        .. code-block:: none

            ~(keystone_admin)]$ oidc-auth -c <ip> -u <username>

        For example,

        .. code-block:: none

            ~(keystone_admin)]$ oidc-auth -c <OAM_ip_address> -u testuser
            Password:
            Login succeeded.
            Updating kubectl config ...
            User testuser set.

    -   If **oidc-auth-apps** is deployed with multiple backend **ldap**
        connectors, run the following command:

        .. code-block:: none

            ~(keystone_admin)]$ oidc-auth -b <connector-id> -c <ip> -u <username>

    .. note::
        If you are running **oidc-auth** within the |prod| containerized remote
        CLI, you must use the ``-p <password>`` option to run the command
        non-interactively.