Mengganti metode autentikasi default

Dokumen ini menjelaskan cara mengganti autentikasi default yang digunakan oleh Rust. Rust otomatis mengautentikasi permintaan Anda ke layanan Google Cloud , tetapi terkadang Anda mungkin perlu mengganti kredensial default Anda.

Prasyarat

Panduan ini menggunakan Cloud Natural Language API. Untuk menginstal API ini, ikuti panduan memulai layanan, yang menunjukkan cara mengaktifkan layanan.

Untuk petunjuk penyiapan lengkap library Rust, lihat Mulai menggunakan Rust.

Dependensi

Anda harus mendeklarasikan dependensi dalam file Cargo.toml:

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

Kredensial default

Cara yang direkomendasikan untuk mengautentikasi aplikasi di Google Cloud adalah dengan menggunakan Kredensial Default Aplikasi, tanpa konfigurasi apa pun, library klien secara default menggunakan jenis kredensial ini. Lihat Cara kerja Kredensial Default Aplikasi untuk mengetahui informasi tentang cara mengonfigurasi default ini tanpa perubahan kode apa pun di aplikasi Anda.

  1. Tambahkan beberapa deklarasi penggunaan untuk menyederhanakan contoh lainnya:

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

  2. Lakukan inisialisasi klien menggunakan default:

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

  3. Gunakan klien ini seperti biasa:

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

Mengganti kredensial default: Kunci API

Kunci API adalah string teks yang memberikan akses ke beberapa layanan Google Cloud . Penggunaan kunci API dapat menyederhanakan pengembangan karena memerlukan lebih sedikit konfigurasi dibandingkan metode autentikasi lainnya. Ada beberapa risiko yang terkait dengan kunci API, sebaiknya Anda membaca Praktik terbaik untuk mengelola kunci API jika Anda berencana menggunakannya.

  1. Tulis fungsi yang menerima string kunci API sebagai parameter input:

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

  2. Menambahkan beberapa deklarasi penggunaan menyederhanakan contoh lainnya:

    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. Gunakan Builder Kunci API untuk membuat kredensial:

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

  4. Lakukan inisialisasi klien menggunakan objek credentials:

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

  5. Dan gunakan klien ini seperti biasa:

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

Mengganti kredensial default: peniruan akun layanan

Dengan peniruan akun layanan, Anda dapat melakukan panggilan API atas nama akun layanan. Menggunakan peniruan identitas akun layanan membahas bentuk autentikasi ini secara mendetail.

Saat menggunakan peniruan identitas akun layanan, Anda akan memulai dengan akun utama yang diautentikasi (akun pengguna atau akun layanan Anda) dan meminta kredensial dengan jangka waktu singkat untuk akun layanan yang memiliki otorisasi yang diperlukan dalam kasus penggunaan Anda.

Cara ini lebih aman daripada mendownload kunci akun layanan untuk akun layanan target, karena Anda tidak perlu menyimpan kredensial di sistem file atau bahkan di memori.

  1. Tulis contoh dalam fungsi yang menerima ID akun layanan sebagai parameter input. Nilai ini dapat berupa email akun layanan atau ID numerik unik yang ditetapkan Google untuk akun layanan.

    /// # 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. Menambahkan beberapa deklarasi penggunaan menyederhanakan contoh lainnya:

    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. Gunakan akun layanan yang ditiru identitasnya Builder untuk membuat kredensial:

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

  4. Lakukan inisialisasi klien menggunakan objek credentials:

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

  5. Dan gunakan klien ini seperti biasa:

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

Informasi Selengkapnya

Pelajari metode autentikasi lainnya di library klien Rust: