Read man openvpn. It is the definitive source of information about OpenVPN.
Let me just copy-paste a part of that page. I think this should completely answer your question:
--auth-token token
This is not an option to be used directly in any
  configuration files, but rather push this option from a
  --client-connect script or a --plugin which hooks into the
  OPENVPN_PLUGIN_CLIENT_CONNECT or OPENVPN_PLUGIN_CLIENT_CONNECT_V2
  calls. This option provides a possibility to replace the clients
  password with an authentication token during the lifetime of the
  OpenVPN client.
Whenever the connection is renegotiated and the --auth-user-pass-verify 
  script or --plugin making use of the
  OPENVPN_PLUGIN_AUTH_USER_PASS_VERIFY hook is triggered, it will pass over
  this token as the password instead of the password the user provided. The
  authentication token can only be reset by a full reconnect where the server
  can push new options to the client. The password the user entered is never
  preserved once an authentication token have been set. If the OpenVPN server
  side rejects the authentication token, the client will receive an
  AUTH_FAIL and disconnect.
The purpose of this is to enable two factor authentication methods, such as
  HOTP or TOTP, to be used without needing to retrieve a new OTP code each
  time the connection is renegotiated. Another use case is to cache
  authentication data on the client without needing to have the users
  password cached in memory during the life time of the session.
To make use of this feature, the --client-connect script or --plugin
  needs to put
push "auth-token UNIQUE_TOKEN_VALUE"
into the file/buffer for dynamic configuration data. This will then make
  the OpenVPN server to push this value to the client, which replaces the
  local password with the UNIQUE_TOKEN_VALUE.