Autenticação Baseada em Token para a CLI

A autenticação baseada em token para a CLI permite criar um token de sessão temporário que pode ser usado para autenticar uma solicitação de comando da CLI. Você pode gerar esse token com ou sem usar um navegador da Web.

Requisitos

Os requisitos são os mesmos listados para a CLI em Requisitos.

Criando uma Sessão da CLI com um Browser

Para usar a autenticação baseada em token para a CLI em um computador com um web browser:

  1. No terminal, execute o seguinte comando:
    oci session authenticate
  2. Selecione uma região.
  3. No browser, informe as suas credenciais de usuário.
  4. Após a autenticação bem-sucedida, feche o navegador e siga o prompt interativo no terminal. Um arquivo de configuração será criado.

Criando uma Sessão da CLI sem um Browser

Para gerar um token de usuário sem um navegador, você deve primeiro autenticar-se com um dos seguintes métodos:

  1. Autenticação baseada em chave de API (oci setup config)

  2. Autenticação baseada em token de sessão (oci session authenticate)

Autenticação baseada em chave de API

Para usar a autenticação baseada em token para a CLI sem um web browser, execute o seguinte comando:

oci session authenticate --no-browser

Esse comando cria um par de chaves pública/privada e atualiza a localização do arquivo de chave privada no arquivo .config.

Autenticação baseada em token de sessão

Se você estiver usando um token de sessão:
oci session authenticate --no-browser --auth security_token

Argumentos opcionais

Para autenticação baseada em chave de API e baseada em token de sessão, você pode fornecer um caminho para uma chave pública como argumento. Isso fornece um token de sessão que pode ser assinado pela chave privada correspondente ao usar o token gerado.

Na CLI, execute o seguinte comando:
oci session authenticate --no-browser --public-key-file-path <path-to-public-key> --profile <profile_name> --auth security_token
Você pode controlar o tempo para o qual o token persiste. O tempo mínimo para o qual o token persiste é de 5 minutos e o tempo máximo para a persistência do token é de 60 minutos (o valor padrão). Para configurar uma expiração de sessão personalizada para o token, use o parâmetro --session-expiration-in-minutes. Por exemplo:
oci session authenticate --no-browser --session-expiration-in-minutes <token-persistence-time-in-minutes> --profile <profile_name> --auth security_token
Observação

Se você precisar de vários tokens de usuário, execute a autenticação baseada em token sem browser novamente com oci session authenticate --no-browser.

Validando um Token

Para verificar se um token é válido, execute o seguinte comando:

oci session validate --config-file <path_to_config_file> --profile <profile_name> --auth security_token
Você deverá receber uma mensagem mostrando a data de expiração da sessão. Se você receber um erro, verifique as definições do seu perfil.
Observação

Você deve usar --auth security_token ou definir a variável de ambiente OCI_CLI_AUTH como security_token para autenticar comandos da CLI usando o token de sessão.

Atualizando um Token

O tempo de expiração do token padrão é definido como 1 hora e pode ser atualizado no período de validade de até 24 horas.
Observação

Para sessões autenticadas usando oci session authenticate --no-browser, o valor máximo é 60 minutos.

Para atualizar o token, execute o seguinte comando:

oci session refresh --profile <profile_name>
Observação

Você deve usar --auth security_token ou definir a variável de ambiente OCI_CLI_AUTH como security_token para autenticar comandos da CLI usando o token de sessão.

Copiando um Token de Sessão da CLI para Outra Máquina

Para usar a autenticação baseada em token para a CLI em um computador sem um web browser, você deve exportar uma sessão de um computador ativado para web e, em seguida, importá-la para o computador sem um web browser.

Exportando do Computador de Origem

No computador de origem com o browser:

  1. Na CLI, execute o seguinte comando:
    oci session authenticate
  2. Informe as credenciais de usuário que deseja usar no computador de destino.
  3. Para exportar um arquivo zip, execute o seguinte comando:
    oci session export --profile <profile_name> --output-file <output_filename>

Para verificar a exportação, consulte Validando um Token.

Importando para o Computador de Destino

No computador de destino sem o browser, execute o seguinte comando na CLI:

oci session import --session-archive <path_to_exported_zip>

Você pode testar a importação executando o seguinte:

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

Isso deve retornar uma lista de regiões. A execução bem-sucedida desse comando verifica se a autenticação de token está funcionando conforme esperado.

Executando Scripts em um Computador sem um Browser

Após importar a autenticação para o computador de destino, você poderá executar a CLI e as SDKs usando as definições a seguir.

Para a CLI

Para executar scripts na CLI, anexe o seguinte sufixo:

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

Para SDKs

Para executar SDKs no computador de destino, você deverá poder ler o arquivo de token e usá-lo para inicializar SecurityTokenSigner.

Após criar um arquivo de token como mostrado em Creating a CLI Session with a Browser, use o processo a seguir.

Observação

Este método só funciona para os SDKs do OCI para Go e Python. O exemplo a seguir é para o Oracle Cloud Infrastructure SDK para Python:
  1. Leia o arquivo de token com base no parâmetro security_token_file do arquivo .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. Leia a chave privada especificada pelo arquivo .config.
    private_key = oci.signer.load_private_key_from_file(config['key_file'])
  3. Crie o cliente SDK inicial que se destina à região especificada pelo usuário.
    signer = oci.auth.signers.SecurityTokenSigner(token, private_key) 
    client = oci.identity.IdentityClient({'region': region}, signer=signer)
  4. Faça a solicitação de identidade.
    result = client.list_region_subscriptions(config['tenancy'])