Cómo anular el método de autenticación predeterminado

En este documento, se describe cómo anular la autenticación predeterminada que usa Rust. Rust autentica automáticamente tus solicitudes a los Google Cloud servicios de, pero es posible que, en ocasiones, debas anular tus credenciales predeterminadas.

Requisitos previos

En esta guía, se usa la API de Cloud Natural Language. Para instalar esta API, sigue la guía de inicio rápido del servicio, en la que se muestra cómo habilitar un servicio.

Para obtener instrucciones de configuración completas para las bibliotecas de Rust, consulta Cómo comenzar a usar Rust.

Dependencias

Debes declarar las dependencias en tu archivo Cargo.toml:

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

Las credenciales predeterminadas

La forma recomendada de autenticar aplicaciones en Google Cloud es usar las credenciales predeterminadas de la aplicación. Sin ninguna configuración, las bibliotecas cliente usan este tipo de credencial de forma predeterminada. Consulta Cómo funcionan las credenciales predeterminadas de la aplicación para obtener información sobre cómo puedes configurar este valor predeterminado sin realizar cambios en el código de tu aplicación.

  1. Agrega algunas declaraciones de uso para simplificar el resto del ejemplo:

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

  2. Inicializa el cliente con los valores predeterminados:

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

  3. Usa este cliente como de costumbre:

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

Anula las credenciales predeterminadas: claves de API

Las claves de API son cadenas de texto que otorgan acceso a algunos Google Cloud servicios. El uso de claves de API puede simplificar el desarrollo, ya que requieren menos configuración que otros métodos de autenticación. Existen algunos riesgos asociados con las claves de API, te recomendamos que leas Prácticas recomendadas para administrar las claves de API si planeas usarlas.

  1. Escribe una función que reciba la cadena de clave de API como parámetro de entrada:

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

  2. Agrega algunas declaraciones de uso para simplificar el resto del ejemplo:

    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. Usa el compilador de claves de API para crear las credenciales:

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

  4. Inicializa el cliente con el objeto credentials:

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

  5. Usa este cliente como de costumbre:

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

Anula las credenciales predeterminadas: identidad temporal como cuenta de servicio

La identidad temporal como cuenta de servicio te permite realizar llamadas a la API en nombre de una cuenta de servicio. En Uso de la identidad temporal como cuenta de servicio, se analiza esta forma de autenticación en detalle.

Cuando usas la identidad temporal como cuenta de servicio, comienzas con una cuenta principal autenticada (tu cuenta de usuario o una cuenta de servicio) y solicitas credenciales de corta duración para una cuenta de servicio que tiene la autorización que requiere tu caso de uso.

Es más seguro que descargar una clave de cuenta de servicio para la cuenta de servicio de destino, ya que no necesitas conservar las credenciales en el sistema de archivos ni siquiera en la memoria.

  1. Escribe el ejemplo en una función que reciba el identificador de la cuenta de servicio como parámetro de entrada. Puede ser el correo electrónico de la cuenta de servicio o el identificador numérico único asignado por Google de la cuenta de servicio.

    /// # 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. Agrega algunas declaraciones de uso para simplificar el resto del ejemplo:

    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. Usa el compilador de cuentas de servicio suplantadas para crear las credenciales:

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

  4. Inicializa el cliente con el objeto credentials:

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

  5. Usa este cliente como de costumbre:

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

Más información

Obtén información sobre otros métodos de autenticación en las bibliotecas cliente de Rust: