Crates.io | google-authz |
lib.rs | google-authz |
version | 1.0.0-alpha.5 |
source | src |
created_at | 2021-05-08 15:54:35.802631 |
updated_at | 2022-05-23 01:12:53.034834 |
description | This library provides auto-renewed tokens for Google service authentication. |
homepage | |
repository | https://github.com/mechiru/google-authz |
max_upload_size | |
id | 394903 |
size | 51,886 |
This library provides auto-renewed tokens for Google service authentication.
google-authz = tower-service + google authentication
Authentication flow | Status |
---|---|
API key | Supported |
OAuth 2.0 client | Supported |
Environment-provided service account | Supported |
Service account key | Supported |
https://www.googleapis.com/auth/cloud-platform
GOOGLE_APPLICATION_CREDENTIALS
environment variable.use google_authz::{Credentials, GoogleAuthz};
let credentials = Credentials::builder().build().await.unwrap();
let service = GoogleAuthz::builder(service).credentials(credentials).build().await;
// same as above
let service = GoogleAuthz::new(service).await;
no auth:
let credentials = Credentials::builder().no_credentials().build().await.unwrap();
let service = GoogleAuthz::builder(service).credentials(credentials).build().await;
api key:
let credentials = Credentials::builder().api_key(api_key).build().await.unwrap();
let service = GoogleAuthz::builder(service).credentials(credentials).build().await;
json:
let credentials = Credentials::builder().json(json).build().await.unwrap();
let service = GoogleAuthz::builder(service).credentials(credentials).build().await;
json file:
let credentials = Credentials::builder().json_file(json_file).build().await.unwrap();
let service = GoogleAuthz::builder(service).credentials(credentials).build().await;
metadata:
let credentials = Credentials::builder().metadata(None).build().await.unwrap();
let service = GoogleAuthz::builder(service).credentials(credentials).build().await;
scope:
let credentials = Credentials::builder().scopes(scopes).build().await.unwrap();
let service = GoogleAuthz::builder(service).credentials(credentials).build().await;
When using with tonic crate, please enable the tonic
feature.
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
tracing_subscriber::fmt::init();
let project = env::args().nth(1).expect("cargo run --bin tonic -- <GCP_PROJECT_ID>");
let channel = Channel::from_static("https://pubsub.googleapis.com").connect().await?;
let channel = GoogleAuthz::new(channel).await;
let mut client = PublisherClient::new(channel);
let response = client
.list_topics(Request::new(ListTopicsRequest {
project: format!("projects/{}", project),
page_size: 10,
..Default::default()
}))
.await?;
println!("response = {:#?}", response);
Ok(())
}
The complete code can be found here.
Licensed under either of Apache License, Version 2.0 or MIT license at your option.