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 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 :
- Dans le terminal, exécutez la commande suivante :
oci session authenticate
- Sélectionner une région.
- Dans le navigateur, entrez vos informations d'identification utilisateur.
- 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 :
-
Authentification basée sur une clé d'API (configurationoci)
-
Authentification basée sur un jeton de session (authentification de session d'association)
Authentification basée sur une clé d'API
Afin d'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
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 d'accès à 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é.
oci session authenticate --no-browser --public-key-file-path <path-to-public-key> --profile <profile_name> --auth security_token
--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
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 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
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>
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 :
- Dans l'interface de ligne de commande, exécutez la commande suivante ::
oci session authenticate
- Saisissez les informations d'identification utilisateur à utiliser sur l'ordinateur cible.
- 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, suivez la procédure suivante.
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:
- 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()
- Lisez la clé privée indiquée par le fichier
.config
.private_key = oci.signer.load_private_key_from_file(config['key_file'])
- 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)
- Effectuez la demande d'identité.
result = client.list_region_subscriptions(config['tenancy'])