Authentification basée sur un jeton pour l'interface de ligne de commande

L'authentification par jeton pour la CLI vous permet de créer un jeton de session temporaire qui peut être utilisé pour authentifier une demande de commande de la CLI. Vous pouvez générer ce jeton avec ou sans utiliser un navigateur Web.

Exigences

Les exigences sont les mêmes que celles répertoriées pour la CLI dans la section Requirements.

Création d'une session CLI avec un navigateur

Afin d'utiliser l'authentification basée sur un jeton pour l'interface de ligne de commande sur un ordinateur avec un navigateur Web, procédez comme suit :

  1. Dans le terminal, exécutez la commande suivante :
    oci session authenticate
  2. Sélectionnez une région.
  3. Dans le navigateur, entrez vos informations d'identification utilisateur.
  4. Une fois l'authentification réussie, fermez le navigateur et suivez l'invite interactive sur le terminal. Un fichier de configuration sera créé.

Création d'une session CLI sans navigateur

Pour générer un jeton utilisateur sans navigateur, vous devez d'abord vous authentifier à l'aide de l'une des méthodes suivantes :

  1. Authentification basée sur une clé d'API (configuration d'association)

  2. Authentification basée sur un jeton de session (authentification de la session d'association)

Authentification basée sur une clé d'API

Pour utiliser l'authentification basée sur un jeton pour l'interface de ligne de commande sans navigateur Web, exécutez la commande suivante :

oci session authenticate --no-browser

Cette commande crée une paire de clés publique/privée et met à jour l'emplacement du fichier de clés privées dans le fichier .config.

Authentification basée sur un jeton de session

Si vous utilisez un jeton de session :
oci session authenticate --no-browser --auth security_token

Arguments facultatifs

Pour l'authentification basée sur une clé d'API et sur un jeton de session, vous pouvez fournir un chemin vers une clé publique en tant qu'argument. Cela fournit un jeton de session qui peut être signé par la clé privée correspondante lors de l'utilisation du jeton généré.

Dans l'interface de ligne de commande, exécutez la commande suivante ::
oci session authenticate --no-browser --public-key-file-path <path-to-public-key> --profile <profile_name> --auth security_token
Vous pouvez contrôler l'heure à laquelle le jeton persiste. La durée minimale de conservation du jeton est de 5 minutes et la durée maximale de persistance du jeton est de 60 minutes (valeur par défaut). Pour configurer l'expiration d'une session personnalisée pour le jeton, utilisez le paramètre --session-expiration-in-minutes. Par exemple :
oci session authenticate --no-browser --session-expiration-in-minutes <token-persistence-time-in-minutes> --profile <profile_name> --auth security_token
Remarque

Si vous avez besoin de plusieurs jetons utilisateur, exécutez à nouveau l'authentification basée sur un jeton sans navigateur avec oci session authenticate --no-browser.

Validation d'un jeton

Pour vérifier qu'un jeton est valide, exécutez la commande suivante :

oci session validate --config-file <path_to_config_file> --profile <profile_name> --auth security_token
Vous devez recevoir un message indiquant la date d'expiration de la session. Si vous recevez une erreur, vérifiez les paramètres de votre profil.
Remarque

Vous devez utiliser --auth security_token ou définir la variable d'environnement OCI_CLI_AUTH sur security_token pour authentifier les commandes de l'interface de ligne de commande à l'aide du jeton de session.

Actualisation d'un jeton

Le délai d'expiration par défaut du jeton est défini sur 1 heure et peut être actualisé pendant la période de validité jusqu'à 24 heures.
Remarque

Pour les sessions authentifiées à l'aide de oci session authenticate --no-browser, la valeur maximale est de 60 minutes.

Pour actualiser le jeton, exécutez la commande suivante :

oci session refresh --profile <profile_name>
Remarque

Vous devez utiliser --auth security_token ou définir la variable d'environnement OCI_CLI_AUTH sur security_token pour authentifier les commandes de l'interface de ligne de commande à l'aide du jeton de session.

Copie d'un jeton de session CLI sur un autre ordinateur

Afin d'utiliser l'authentification basée sur un jeton pour l'interface de ligne de commande sur un ordinateur sans navigateur Web, vous devez exporter une session à partir d'un ordinateur doté d'un accès Web, puis l'importer vers l'ordinateur sans navigateur Web.

Export à partir de l'ordinateur source

Sur l'ordinateur source doté du navigateur, procédez comme suit :

  1. Dans l'interface de ligne de commande, exécutez la commande suivante ::
    oci session authenticate
  2. Saisissez les informations d'identification utilisateur à utiliser sur l'ordinateur cible.
  3. Pour exporter un fichier ZIP, exécutez la commande suivante :
    oci session export --profile <profile_name> --output-file <output_filename>

Pour vérifier l'export, reportez-vous à Validation d'un jeton.

Import vers l'ordinateur cible

Sur l'ordinateur cible sans navigateur, exécutez la commande suivante dans l'interface de ligne de commande :

oci session import --session-archive <path_to_exported_zip>

Vous pouvez tester l'import en exécutant la commande ci-dessous :

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

Celle-ci doit renvoyer la liste des régions. Si l'exécution de cette commande est réussie, elle vérifie que l'authentification par jeton fonctionne comme prévu.

Exécution de scripts sur un ordinateur sans navigateur

Après l'import de l'authentification vers l'ordinateur cible, vous pouvez exécuter l'interface de ligne de commande et les kits SDK en utilisant les paramètres suivants.

Pour l'interface de ligne de commande

Pour exécuter des scripts sur l'interface de ligne de commande, ajoutez le suffixe ci-dessous à la fin :

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

Pour les kits SDK

Pour exécuter des kits SDK sur l'ordinateur cible, lisez le fichier de jeton, puis utilisez-le pour initialiser SecurityTokenSigner.

Après avoir créé un fichier de jeton comme indiqué dans Création d'une session d'interface de ligne de commande avec un navigateur, procédez comme suit.

Remarque

Cette méthode fonctionne uniquement pour les kits SDK OCI pour Go et Python. L'exemple suivant concerne le kit SDK Oracle Cloud Infrastructure pour Python:
  1. Lisez le fichier de jeton à partir du paramètre security_token_file du fichier .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. Lisez la clé privée indiquée par le fichier .config.
    private_key = oci.signer.load_private_key_from_file(config['key_file'])
  3. Créez le client de kit SDK initial qui cible la région spécifiée par l'utilisateur.
    signer = oci.auth.signers.SecurityTokenSigner(token, private_key) 
    client = oci.identity.IdentityClient({'region': region}, signer=signer)
  4. Effectuez la demande d'identité.
    result = client.list_region_subscriptions(config['tenancy'])