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

L'authentification basée sur un 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 de l'interface de ligne de commande. Vous pouvez générer ce jeton avec ou sans l'aide d'un navigateur Web.

Conditions requises

Les exigences sont les mêmes que celles listées pour l'interface de ligne de commande dans Exigences.

Création d'une session d'interface de ligne de commande avec un navigateur

Pour utiliser l'authentification basée sur un jeton pour l'interface de ligne de commande sur un ordinateur doté d'un navigateur Web :

  1. Dans le terminal, exécutez la commande suivante :
    oci session authenticate
  2. Sélectionner une région.
  3. Dans le navigateur, entrez vos données d'identification d'utilisateur.
  4. Après 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 d'interface de ligne de commande sans navigateur

Pour générer un jeton utilisateur sans navigateur, vous devez d'abord vous authentifier avec 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 (oci session authenticate)

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é privée 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 l'authentification basée 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 de persistance du jeton. La durée minimale de persistance 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
Note

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

Validation d'un jeton

Pour vérifier la validité d'un jeton, exécutez la commande suivante :

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

Vous devez utiliser --auth security_token ou régler la variable d'environnement OCI_CLI_AUTH à 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 du jeton par défaut est réglé à 1 heure et peut être actualisé dans la période de validité jusqu'à 24 heures.
Note

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>
Note

Vous devez utiliser --auth security_token ou régler la variable d'environnement OCI_CLI_AUTH à 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 d'interface de ligne de commande sur un autre ordinateur

Pour utiliser une 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 Web et l'importer sur un ordinateur sans navigateur Web.

Exportation à partir de l'ordinateur source

Dans l'ordinateur source avec le navigateur :

  1. Dans l'interface de ligne de commande, exécutez la commande suivante :
    oci session authenticate
  2. Entrez les données d'identification d'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'exportation, voir Validation d'un jeton.

Importation vers l'ordinateur cible

Dans 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'importation en exécutant la commande suivante :

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

Elle devrait retourner une liste de régions. L'exécution réussie de cette commande vérifie que l'authentification du jeton fonctionne comme prévu.

Exécution de scripts sur un ordinateur sans navigateur

Après l'importation de l'authentification sur l'ordinateur cible, vous pouvez exécuter l'interface de ligne de commande et les trousses SDK à l'aide des 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 suivant :

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

Pour les trousses SDK

Pour exécuter des trousses SDK sur l'ordinateur cible, vous devez les lire dans le fichier de jeton, puis l'utiliser pour initialiser SecurityTokenSigner.

Après la création d'un fichier de jeton comme indiqué sous Création d'une session d'interface de ligne de commande avec un navigateur, utilisez le processus suivant.

Note

Cette méthode ne fonctionne que pour les trousses SDK OCI pour Go et Python. L'exemple suivant concerne la trousse 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 trousse 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. Soumettez la demande d'identité.
    result = client.list_region_subscriptions(config['tenancy'])