Tokenbasierte Authentifizierung für die CLI

Mit der tokenbasierten Authentifizierung für die CLI können Sie ein temporäres Sessiontoken erstellen, das zur Authentifizierung einer CLI-Befehlsanforderung verwendet werden kann. Sie können dieses Token mit oder ohne Webbrowser generieren.

Anforderungen

Die Anforderungen entsprechen denen, die für die CLI unter Anforderungen aufgeführt werden.

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 im Terminal den folgenden Befehl 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-Sitzungen ohne Browser erstellen

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

  1. API-Schlüsselbasierte Authentifizierung (oci setup config)

  2. Sessiontoken-basierte 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 wird ein Public/Private-Key-Paar erstellt und der Speicherort der Private-Key-Datei in der Datei .config aktualisiert.

Auf Sessiontoken basierende Authentifizierung

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

Optionale Argumente

Bei der schlüsselbasierten und sessiontokenbasierten Authentifizierung können Sie einen Pfad zu einem Public Key als Argument angeben. Dadurch wird ein Sessiontoken bereitgestellt, das mit dem entsprechenden Private Key signiert werden kann, während das generierte Token verwendet wird.

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 Zeit steuern, für die das Token beibehalten wird. Die Mindestdauer, für die das Token beibehalten wird, beträgt 5 Minuten und die maximale Zeit für die Tokenpersistenz 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 erneut mit oci session authenticate --no-browser 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 Standardgültigkeitsdauer eines Tokens ist auf 1 Stunde gesetzt und kann innerhalb des Gültigkeitszeitraums bis zu 24 Stunden aktualisiert wird.
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 Computer 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, führen Sie den folgenden Prozess aus.

Hinweis

Diese Methode funktioniert nur für die OCI-SDKs für Go und Python. Das folgende Beispiel gilt für 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'])