覆寫預設驗證方法

本文說明如何覆寫 Rust 使用的預設驗證。Rust 會自動驗證您對 Google Cloud 服務的要求,但您有時可能需要覆寫預設憑證。

必要條件

本指南使用 Cloud Natural Language API。如要安裝這個 API,請按照服務快速入門導覽課程的指示操作,瞭解如何啟用服務。

如需 Rust 程式庫的完整設定操作說明,請參閱「開始使用 Rust」。

依附元件

您必須在 Cargo.toml 檔案中宣告依附元件:

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

預設憑證

在 Google Cloud 中驗證應用程式的建議方式是使用應用程式預設憑證,用戶端程式庫預設會使用這種憑證類型,不需任何設定。如要瞭解如何在不變更應用程式程式碼的情況下設定這項預設值,請參閱「應用程式預設憑證的運作方式」。

  1. 新增一些使用宣告,簡化範例的其餘部分:

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

  2. 使用預設值初始化用戶端:

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

  3. 照常使用這個用戶端:

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

覆寫預設憑證:API 金鑰

API 金鑰是文字字串,可授予部分 Google Cloud 服務的存取權。使用 API 金鑰可簡化開發作業,因為這類金鑰所需的設定比其他驗證方式少。API 金鑰存在一些風險,如果您打算使用,建議您參閱「API 金鑰的最佳管理做法」。

  1. 編寫函式,接收 API 金鑰字串做為輸入參數:

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

  2. 新增一些使用宣告,簡化範例的其餘部分:

    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. 使用 API 金鑰建構工具建立憑證:

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

  4. 使用 credentials 物件初始化用戶端:

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

  5. 然後照常使用這個用戶端:

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

覆寫預設憑證:服務帳戶模擬

服務帳戶模擬功能可讓您代表服務帳戶發出 API 呼叫。如要進一步瞭解這種驗證方式,請參閱「使用服務帳戶模擬功能」。

使用服務帳戶模擬功能時,您會先從已驗證的主體 (使用者帳戶或服務帳戶) 開始,然後要求服務帳戶的短期憑證,該服務帳戶具備您用途所需的授權。

這種做法比下載目標服務帳戶的金鑰更安全,因為您不需要將憑證保存在檔案系統或記憶體中。

  1. 在函式中編寫範例,並將服務帳戶 ID 做為輸入參數。這可以是服務帳戶電子郵件,或是 Google 指派給服務帳戶的專屬數字 ID。

    /// # 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. 新增一些使用宣告,簡化範例的其餘部分:

    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. 使用模擬服務帳戶建構工具建立憑證:

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

  4. 使用 credentials 物件初始化用戶端:

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

  5. 然後照常使用這個用戶端:

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

更多資訊

瞭解 Rust 用戶端程式庫中的其他驗證方式: