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 :
- Dans le terminal, exécutez la commande suivante :
oci session authenticate
- Sélectionner une région.
- Dans le navigateur, entrez vos données d'identification d'utilisateur.
- 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 :
-
authentification basée sur une clé d'API (configuration de configuration d'oci)
-
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
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é.
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 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 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
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 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 :
- Dans l'interface de ligne de commande, exécutez la commande suivante :
oci session authenticate
- Entrez les données d'identification d'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'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.
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 :
- 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 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)
- Soumettez la demande d'identité.
result = client.list_region_subscriptions(config['tenancy'])