Standardauthentifizierungsmethode überschreiben

In diesem Dokument wird beschrieben, wie Sie die von Rust verwendete Standardauthentifizierung überschreiben. Das Rust-SDK authentifiziert Ihre Anfragen an Google Cloud -Dienste automatisch. Gelegentlich müssen Sie jedoch Ihre Standardanmeldedaten überschreiben.

Vorbereitung

In diesem Leitfaden wird die Cloud Natural Language API verwendet. Folgen Sie der Kurzanleitung für Dienste, um diese API zu installieren. Dort wird beschrieben, wie Sie einen Dienst aktivieren.

Eine vollständige Einrichtungsanleitung für die Rust-Bibliotheken finden Sie unter Erste Schritte mit Rust.

Abhängigkeiten

Sie müssen die Abhängigkeiten in der Datei Cargo.toml deklarieren:

cargo add google-cloud-language-v2 google-cloud-auth

Die Standardanmeldedaten

Die empfohlene Methode zum Authentifizieren von Anwendungen in Google Cloud ist die Verwendung von Standardanmeldedaten für Anwendungen. Die Clientbibliotheken verwenden diesen Anmeldedatentyp standardmäßig, ohne dass eine Konfiguration erforderlich ist. Informationen dazu, wie Sie diese Standardeinstellung ohne Codeänderungen in Ihrer Anwendung konfigurieren können, finden Sie unter Funktionsweise von Standardanmeldedaten für Anwendungen.

  1. Fügen Sie einige „use“-Deklarationen hinzu, um den Rest des Beispiels zu vereinfachen:

    use google_cloud_language_v2::client::LanguageService;
    use google_cloud_language_v2::model::{Document, document::Type};

  2. Initialisieren Sie den Client mit den Standardeinstellungen:

    let client = LanguageService::builder().build().await?;

  3. Verwenden Sie diesen Client wie gewohnt:

    let response = client
        .analyze_sentiment()
        .set_document(
            Document::new()
                .set_content("Hello World!")
                .set_type(Type::PlainText),
        )
        .send()
        .await?;
    println!("response={response:?}");

Standardanmeldedaten überschreiben: API-Schlüssel

API-Schlüssel sind Textstrings, die den Zugriff auf einige Google Cloud -Dienste ermöglichen. Die Verwendung von API-Schlüsseln kann die Entwicklung vereinfachen, da sie weniger Konfiguration erfordert als andere Authentifizierungsmethoden. API-Schlüssel sind mit einigen Risiken verbunden. Wenn Sie sie verwenden möchten, empfehlen wir Ihnen, die Best Practices für die Verwaltung von API-Schlüsseln zu lesen.

  1. Schreiben Sie eine Funktion, die den API-Schlüsselstring als Eingabeparameter empfängt:

    pub async fn sample(key: &str) -> anyhow::Result<()> {

  2. Durch das Hinzufügen einiger „use“-Deklarationen wird der Rest des Beispiels vereinfacht:

    use google_cloud_auth::credentials::api_key_credentials::Builder as ApiKeyCredentialsBuilder;
    use google_cloud_language_v2::client::LanguageService;
    use google_cloud_language_v2::model::{Document, document::Type};

  3. Verwenden Sie den Builder für API-Schlüssel, um die Anmeldedaten zu erstellen:

    let credentials = ApiKeyCredentialsBuilder::new(key).build();

  4. Initialisieren Sie den Client mit dem credentials-Objekt:

    let client = LanguageService::builder()
        .with_credentials(credentials)
        .build()
        .await?;

  5. Verwenden Sie diesen Client wie gewohnt:

    let response = client
        .analyze_sentiment()
        .set_document(
            Document::new()
                .set_content("Hello World!")
                .set_type(Type::PlainText),
        )
        .send()
        .await?;
    println!("response={response:?}");

Standardanmeldedaten überschreiben: Identitätsübernahme des Dienstkontos

Mit der Identitätsübernahme von Dienstkonten können Sie API-Aufrufe im Namen eines Dienstkontos ausführen. Identitätsübernahme des Dienstkontos verwenden

Wenn Sie die Identitätsübernahme eines Dienstkontos verwenden, beginnen Sie mit einem authentifizierten Hauptkonto (Ihrem Nutzer- oder Dienstkonto) und fordern kurzlebige Anmeldedaten für ein Dienstkonto an, für das die erforderliche Autorisierung vorliegt.

Es ist sicherer, als einen Dienstkontoschlüssel für das Zieldienstkonto herunterzuladen, da Sie die Anmeldedaten nicht im Dateisystem oder sogar im Arbeitsspeicher speichern müssen.

  1. Schreiben Sie das Beispiel in eine Funktion, die die Dienstkonto-ID als Eingabeparameter empfängt. Dies kann die E‑Mail-Adresse des Dienstkontos oder die eindeutige numerische ID des Dienstkontos sein, die von Google zugewiesen wurde.

    /// # Parameters
    /// * `target_principal`: the email or unique id of the target service account.
    ///   For example: `my-service-account@my-project.iam.gserviceaccount.com`.
    pub async fn sample(target_principal: &str) -> anyhow::Result<()> {

  2. Durch das Hinzufügen einiger „use“-Deklarationen wird der Rest des Beispiels vereinfacht:

    use google_cloud_auth::credentials::Builder as AdcCredentialsBuilder;
    use google_cloud_auth::credentials::impersonated::Builder as ImpersonatedCredentialsBuilder;
    use google_cloud_language_v2::client::LanguageService;
    use google_cloud_language_v2::model::{Document, document::Type};

  3. Verwenden Sie das Dienstkonto Builder, um die Anmeldedaten zu erstellen:

    let credentials = ImpersonatedCredentialsBuilder::from_source_credentials(
        AdcCredentialsBuilder::default().build()?,
    )
    .with_target_principal(target_principal)
    .build()?;

  4. Initialisieren Sie den Client mit dem credentials-Objekt:

    let client = LanguageService::builder()
        .with_credentials(credentials)
        .build()
        .await?;

  5. Verwenden Sie diesen Client wie gewohnt:

    let response = client
        .analyze_sentiment()
        .set_document(
            Document::new()
                .set_content("Hello World!")
                .set_type(Type::PlainText),
        )
        .send()
        .await?;
    println!("response={response:?}");

Weitere Informationen

Weitere Informationen zu anderen Authentifizierungsmethoden in den Rust-Clientbibliotheken: