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

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

Exigences

Les exigences sont les mêmes que celles répertoriées pour l'interface de ligne de commande dans 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électionner 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 d'installation 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 de configuration d'oci)

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

Authentification basée sur une clé d'API

Pour utiliser l'authentification par 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 pendant laquelle le jeton persiste est de 5 minutes et la durée maximale pour la persistance du jeton est de 60 minutes (valeur par défaut). Afin de configurer une expiration de 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

La durée d'expiration par défaut d'un jeton est définie sur 1 heure et peut être actualisée 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 vers une autre machine

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'])