Standardauthentifizierungsmethode überschreiben

In diesem Dokument wird beschrieben, wie Sie die von Rust verwendete Standardauthentifizierung überschreiben. Rust 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 erfahren Sie, wie Sie einen Dienst aktivieren.

Eine vollständige Anleitung zur Einrichtung der 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 zur Authentifizierung von Anwendungen in Google Cloud ist die Verwendung von Standardanmeldedaten für Anwendungen. Ohne Konfiguration verwenden die Clientbibliotheken standardmäßig diesen Anmeldedatentyp. Informationen dazu, wie Sie diesen Standard 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 Zugriff auf einige Google Cloud -Dienste gewähren. Die Verwendung von API-Schlüsseln kann die Entwicklung vereinfachen, da sie weniger Konfiguration erfordern als andere Authentifizierungsmethoden. Mit API-Schlüsseln sind einige Risiken verbunden. Wir empfehlen Ihnen, die Best Practices für die Verwaltung von API-Schlüsseln zu lesen, wenn Sie sie verwenden möchten.

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

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

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

    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 des Dienstkontos können Sie API-Aufrufe im Namen eines Dienstkontos ausführen. Unter Identitätsübernahme des Dienstkontos verwenden wird diese Form der Authentifizierung ausführlich erläutert.

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.

Dies ist sicherer als das Herunterladen eines Dienstkontoschlüssels für das Zieldienstkonto, da Sie die Anmeldedaten nicht im Dateisystem oder 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, von Google zugewiesene Kennung des Dienstkontos sein.

    /// # 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. Fügen Sie einige use-Deklarationen hinzu, um den Rest des Beispiels zu vereinfachen:

    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 den Builder des Dienstkontos, dessen Identität übernommen wurde, 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: