Autenticación basada en token para CLI

La autenticación basada en token para la CLI permite crear un token de sesión temporal que se puede utilizar para autenticar una solicitud de comando de la CLI. Puede generar este token con o sin un explorador web.

Requisitos

Los requisitos son los mismos que los que se muestran para la CLI en Requirements.

Creación de una sesión de CLI con un explorador

Para utilizar la autenticación basada en token para CLI en una computadora con un explorador web:

  1. En el terminal, ejecute el siguiente comando:
    oci session authenticate
  2. Seleccionar una región.
  3. En el explorador, introduzca sus credenciales de usuario.
  4. Después de la autenticación correcta, cierre el explorador y siga el indicador interactivo del terminal. Se creará un archivo de configuración.

Creación de una sesión de CLI sin un explorador

Para generar un token de usuario sin un explorador, primero debe autenticarse con uno de los siguientes métodos:

  1. Autenticación basada en clave de API (configuración de OCI)

  2. Autenticación basada en token de sesión (oci session autenticate)

Autenticación basada en clave de API

Para utilizar la autenticación basada en token para CLI sin un explorador web, ejecute el siguiente comando:

oci session authenticate --no-browser

Este comando crea un par de claves pública/privada y actualiza la ubicación del archivo de clave privada en el archivo .config.

Autenticación basada en token de sesión

Si utiliza un token de sesión:
oci session authenticate --no-browser --auth security_token

Argumentos opcionales

Para la autenticación basada en clave de API y en token de sesión, puede proporcionar una ruta de acceso a una clave pública como argumento. Proporciona un token de sesión que se puede firmar con la clave privada correspondiente mientras se utiliza el token generado.

En CLI, ejecute el siguiente comando:
oci session authenticate --no-browser --public-key-file-path <path-to-public-key> --profile <profile_name> --auth security_token
Puede controlar la hora a la que persiste el token. El tiempo mínimo para el que el token persiste es de 5 minutos y el tiempo máximo para la persistencia del token es de 60 minutos (valor por defecto). Para configurar una caducidad de sesión personalizada para el token, utilice el parámetro --session-expiration-in-minutes. Por ejemplo:
oci session authenticate --no-browser --session-expiration-in-minutes <token-persistence-time-in-minutes> --profile <profile_name> --auth security_token
Nota

Si necesita varios tokens de usuario, vuelva a ejecutar la autenticación basada en token sin explorador con oci session authenticate --no-browser.

Validación de un token

Para verificar que un token es válido, ejecute el siguiente comando:

oci session validate --config-file <path_to_config_file> --profile <profile_name> --auth security_token
Debe recibir un mensaje que muestre la fecha de caducidad de la sesión. Si recibe un error, compruebe la configuración del perfil.
Nota

Debe utilizar --auth security_token o definir la variable de entorno OCI_CLI_AUTH en security_token para autenticar los comandos de la CLI mediante el token de sesión.

Refrescamiento de un token

La hora de caducidad del token por defecto se define en 1 hora y se puede refrescar dentro del período de validez hasta 24 horas.
Nota

Para las sesiones autenticadas mediante oci session authenticate --no-browser, el valor máximo es 60 minutos.

Para refrescar el token, ejecute el siguiente comando:

oci session refresh --profile <profile_name>
Nota

Debe utilizar --auth security_token o definir la variable de entorno OCI_CLI_AUTH en security_token para autenticar los comandos de la CLI mediante el token de sesión.

Copia de un token de sesión de CLI en otra máquina

Para utilizar la autenticación basada en token para CLI en una computadora sin un explorador web, debe exportar una sesión de una computadora que tenga activada la Web y, a continuación, importarla a la computadora sin un explorador web.

Exportación desde la computadora de origen

En la computadora de origen con el explorador:

  1. En CLI, ejecute el siguiente comando:
    oci session authenticate
  2. Introduzca las credenciales de usuario que desea utilizar en la computadora de destino.
  3. Para exportar un archivo zip, ejecute el siguiente comando:
    oci session export --profile <profile_name> --output-file <output_filename>

Para verificar la exportación, consulte Validación de un token.

Importación a la computadora de destino

En la computadora de destino sin explorador, ejecute el siguiente comando en CLI:

oci session import --session-archive <path_to_exported_zip>

Puede probar la importación ejecutando lo siguiente:

oci iam region list --config-file <path_to_config_file> --profile <profile_name> --auth security_token

Debe devolver una lista de regiones. La ejecución correcta de este comando verifica que la autenticación con token funciona según lo esperado.

Ejecución de scripts en una computadora sin explorador

Después de importar la autenticación a la computadora de destino, puede ejecutar CLI y los SDK utilizando los siguientes valores.

Para CLI

Para ejecutar scripts en CLI, agregue el siguiente sufijo:

--config-file <path_to_config_file> --profile <profile_name> --auth security_token

Para SDK

Para ejecutar SDK en la computadora de destino, debe leer el archivo de token y, a continuación, utilizarlo para inicializar SecurityTokenSigner.

Después de crear un archivo de token, como se muestra en Creación de una sesión de CLI con un explorador, use el siguiente proceso.

Nota

Este método solo funciona con los SDK de OCI para Go y Python. El siguiente ejemplo es para el SDK de Oracle Cloud Infrastructure para Python:
  1. Lea el archivo de token del parámetro security_token_file del archivo .config.
    config = oci.config.from_file(profile_name='TokenDemo')
    token_file = config['security_token_file']
    token = None
    with open(token_file, 'r') as f:
         token = f.read()
  2. Lea la clave privada especificada por el archivo .config.
    private_key = oci.signer.load_private_key_from_file(config['key_file'])
  3. Cree el cliente de SDK inicial que es el destino de la región especificada por el usuario.
    signer = oci.auth.signers.SecurityTokenSigner(token, private_key) 
    client = oci.identity.IdentityClient({'region': region}, signer=signer)
  4. Realice la solicitud de identidad.
    result = client.list_region_subscriptions(config['tenancy'])