#google-cloud #gcp #authentication

google-cloud-auth

Google Cloud Platform server application authentication library

28 releases (15 breaking)

0.16.0 Jun 27, 2024
0.14.0 Apr 18, 2024
0.13.2 Mar 24, 2024
0.13.0 Oct 15, 2023
0.1.1 Nov 28, 2021

#144 in Web programming

Download history 27252/week @ 2024-04-04 37569/week @ 2024-04-11 39912/week @ 2024-04-18 33989/week @ 2024-04-25 30162/week @ 2024-05-02 35407/week @ 2024-05-09 45427/week @ 2024-05-16 39295/week @ 2024-05-23 41133/week @ 2024-05-30 44431/week @ 2024-06-06 39568/week @ 2024-06-13 39485/week @ 2024-06-20 39826/week @ 2024-06-27 39096/week @ 2024-07-04 28957/week @ 2024-07-11 24552/week @ 2024-07-18

140,264 downloads per month
Used in 47 crates (13 directly)

MIT license

91KB
2K SLoC

google-cloud-auth

Google Cloud Platform server application authentication library.

crates.io

Installation

[dependencies]
google-cloud-auth = <version>
google-cloud-token = "0.1.2"

Quickstart

#[tokio::main]
async fn main() -> Result<(), error::Error> {
    use google_cloud_auth::{project::Config, token::DefaultTokenSourceProvider};
    use google_cloud_token::TokenSourceProvider as _;

    let audience = "https://spanner.googleapis.com/";
    let scopes = [
        "https://www.googleapis.com/auth/cloud-platform",
        "https://www.googleapis.com/auth/spanner.data",
    ];
    let config = Config {
        // audience is required only for service account jwt-auth
        // https://developers.google.com/identity/protocols/oauth2/service-account#jwt-auth
        audience: Some(audience),
        // scopes is required only for service account Oauth2
        // https://developers.google.com/identity/protocols/oauth2/service-account
        scopes: Some(&scopes),
        sub: None,
    };
    let tsp = DefaultTokenSourceProvider::new(config).await?;
    let ts = tsp.token_source();
    let token = ts.token().await?;
    println!("token is {}", token);
    Ok(())
}

DefaultTokenSourceProvider::new(config) looks for credentials in the following places, preferring the first location found:

  1. A JSON file whose path is specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable.
  2. A JSON file in a location known to the gcloud command-line tool. On Windows, this is %APPDATA%/gcloud/application_default_credentials.json. On other systems, $HOME/.config/gcloud/application_default_credentials.json.
  3. On Google Compute Engine, it fetches credentials from the metadata server.

Supported Credentials

Supported Workload Identity

https://cloud.google.com/iam/docs/workload-identity-federation

  • AWS
  • Azure Active Directory
  • On-premises Active Directory
  • Okta
  • Kubernetes clusters

Dependencies

~7–22MB
~369K SLoC