Autenticación basada en token para CLI

La autenticación basada en token de CLI permite a los clientes autenticar su sesión de forma interactiva y, a continuación, utilizar CLI para una única sesión sin una clave de firma de API. Esto permite a los clientes que utilizan un proveedor de identidad que no está soportado por SCIM usar una cuenta de usuario federada con CLI y los SDK.

Requisitos

Los requisitos son los mismos que los que se enumeran en CLI en Requisitos, excepto en que en lugar de un par de claves SSH, se necesita un explorador web para el proceso de autenticación.

Inicio de una sesión de CLI basada en token

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

  1. En CLI, ejecute el siguiente comando. De esta forma se abrirá un explorador web.
    oci session authenticate
  2. En el explorador, introduzca sus credenciales de usuario. Esta información de autenticación se guarda en el archivo .config.

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

El TTL de token por defecto se define en 1 hora antes de que caduque y se puede refrescar dentro del período de validez hasta 24 horas.

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.

Inicio de una sesión de CLI basada en token sin un explorador

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 Inicio de una sesión de CLI basada en token, use el siguiente proceso.

Nota

Este método solo funciona para los SDK de OCI para Go y Python. El siguiente ejemplo es para el SDK de Python de Oracle Cloud Infrastructure.
  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'])