Tokenbasierte Authentifizierung für die CLI

Mit der tokenbasierten Authentifizierung für die CLI können Sie ein temporäres Sessiontoken erstellen, mit dem eine CLI-Befehlsanforderung authentifiziert werden kann. Sie können dieses Token mit oder ohne Verwendung eines Webbrowsers generieren.

Anforderungen

Die Anforderungen entsprechen den Anforderungen, die für die CLI unter Anforderungen aufgeführt sind.

CLI-Session mit einem Browser erstellen

So verwenden Sie die tokenbasierte Authentifizierung für die CLI auf einem Rechner mit einem Webbrowser:

  1. Führen Sie den folgenden Befehl im Terminal aus:
    oci session authenticate
  2. Region auswählen.
  3. Geben Sie im Browser Ihre Benutzerzugangsdaten ein.
  4. Schließen Sie nach erfolgreicher Authentifizierung den Browser, und folgen Sie der interaktiven Eingabeaufforderung auf dem Terminal. Es wird eine Konfigurationsdatei erstellt.

CLI-Session ohne Browser erstellen

Um ein Benutzertoken ohne Browser zu generieren, müssen Sie sich zunächst mit einer der folgenden Methoden authentifizieren:

  1. Auf API-Schlüssel basierende Authentifizierung (OCKS-Setupkonfiguration)

  2. Auf Sessiontoken basierende Authentifizierung (oci session authenticate)

Auf API-Schlüssel basierende Authentifizierung

Um die tokenbasierte Authentifizierung für die CLI ohne Webbrowser zu verwenden, führen Sie den folgenden Befehl aus:

oci session authenticate --no-browser

Mit diesem Befehl erstellen Sie ein Public/Private-Key-Paar, und aktualisieren den Speicherort der Private-Key-Datei in der Datei .config.

Auf Sessiontoken basierende Authentifizierung

Wenn Sie ein Sessiontoken verwenden:
oci session authenticate --no-browser --auth security_token

Optionale Argumente

Bei der API-Schlüssel- und Sessiontoken-basierten Authentifizierung können Sie einen Pfad zu einem Public Key als Argument angeben. Dadurch wird ein Sessiontoken bereitgestellt, das mit dem entsprechenden Private Key bei Verwendung des generierten Tokens signiert werden kann.

Führen Sie den folgenden Befehl in der CLI aus:
oci session authenticate --no-browser --public-key-file-path <path-to-public-key> --profile <profile_name> --auth security_token
Sie können die Dauer des Tokens steuern. Die Mindestdauer für die Persistenz des Tokens beträgt 5 Minuten und die maximale Zeit für die Tokenpersistenz beträgt 60 Minuten (Standardwert). Um einen benutzerdefinierten Sessionablauf für das Token einzurichten, verwenden Sie den Parameter --session-expiration-in-minutes. Beispiel:
oci session authenticate --no-browser --session-expiration-in-minutes <token-persistence-time-in-minutes> --profile <profile_name> --auth security_token
Hinweis

Wenn Sie mehrere Benutzertoken benötigen, führen Sie die tokenbasierte Authentifizierung ohne Browser mit oci session authenticate --no-browser erneut aus.

Token validieren

Um zu prüfen, ob ein Token gültig ist, führen Sie den folgenden Befehl aus:

oci session validate --config-file <path_to_config_file> --profile <profile_name> --auth security_token
Sie erhalten eine Meldung, in der das Ablaufdatum für die Session angezeigt wird. Wenn Sie eine Fehlermeldung erhalten, prüfen Sie die Profileinstellungen.
Hinweis

Sie müssen --auth security_token verwenden oder die Umgebungsvariable OCI_CLI_AUTH mit security_token belegen, um CLI-Befehle mit dem Sessiontoken zu authentifizieren.

Token aktualisieren

Die Standard-Tokenablaufzeit beträgt 1 Stunde und kann innerhalb des Gültigkeitszeitraums von bis zu 24 Stunden aktualisiert werden.
Hinweis

Bei Sessions, die mit oci session authenticate --no-browser authentifiziert wurden, beträgt der Höchstwert 60 Minuten.

Um das Token zu aktualisieren, führen Sie den folgenden Befehl aus:

oci session refresh --profile <profile_name>
Hinweis

Sie müssen --auth security_token verwenden oder die Umgebungsvariable OCI_CLI_AUTH mit security_token belegen, um CLI-Befehle mit dem Sessiontoken zu authentifizieren.

CLI-Sitzungstoken auf einen anderen Rechner kopieren

Um die tokenbasierte Authentifizierung für die CLI auf einem Rechner ohne Webbrowser zu verwenden, müssen Sie eine Session von einem webfähigen Rechner exportieren und sie dann auf dem Rechner ohne Webbrowser importieren.

Vom Quellrechner exportieren

Gehen Sie auf dem Quellrechner mit dem Browser wie folgt vor:

  1. Führen Sie den folgenden Befehl in der CLI aus:
    oci session authenticate
  2. Geben Sie die Benutzerzugangsdaten ein, die Sie auf dem Zielrechner verwenden möchten.
  3. Um eine ZIP-Datei zu exportieren, führen Sie den folgenden Befehl aus:
    oci session export --profile <profile_name> --output-file <output_filename>

Informationen zum Prüfen des Exports finden Sie unter Token validieren.

Auf Zielrechner importieren

Führen Sie auf dem Zielrechner ohne den Browser den folgenden Befehl in der CLI aus:

oci session import --session-archive <path_to_exported_zip>

Sie können den Import testen, indem Sie Folgendes ausführen:

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

Es sollte eine Liste mit Regionen zurückgeben werden. Die erfolgreiche Ausführung dieses Befehls verifiziert, dass die Tokenauthentifizierung wie erwartet funktioniert.

Skripte auf einem Rechner ohne Browser ausführen

Nach dem Importieren der Authentifizierung auf dem Zielrechner können Sie die CLI und die SDKs mit den folgenden Einstellungen ausführen.

Für die CLI

Um Skripte in der CLI auszuführen, hängen Sie das folgende Suffix an:

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

Für SDKs

Um SDKs auf dem Zielrechner auszuführen, müssen Sie die Tokendatei lesen und dann zur Initialisierung von SecurityTokenSigner verwenden.

Nachdem Sie eine Tokendatei erstellt haben, wie unter CLI-Session mit einem Browser erstellen gezeigt, verwenden Sie den folgenden Prozess.

Hinweis

Diese Methode funktioniert nur für die OCI-SDKs für Go und Python. Das folgende Beispiel bezieht sich auf das Oracle Cloud Infrastructure-SDK für Python:
  1. Lesen Sie die Tokendatei aus dem Parameter security_token_file der .config-Datei.
    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. Lesen Sie den Private Key, der von der .config-Datei angegeben wird.
    private_key = oci.signer.load_private_key_from_file(config['key_file'])
  3. Erstellen Sie den ersten SDK-Client mit der vom Benutzer angegebene Region als Ziel.
    signer = oci.auth.signers.SecurityTokenSigner(token, private_key) 
    client = oci.identity.IdentityClient({'region': region}, signer=signer)
  4. Erstellen Sie die Identitätsanforderung.
    result = client.list_region_subscriptions(config['tenancy'])