#google-cloud #service-account #google #google-service #cloud #gcp

google-authz

本库为Google服务身份验证提供自动续期的令牌

7个版本

1.0.0-alpha.52022年5月23日
1.0.0-alpha.42022年4月12日
1.0.0-alpha.32022年2月18日
1.0.0-alpha.22021年12月30日
0.0.1 2021年5月8日

#462 in 身份验证

Download history 157/week @ 2024-04-23 273/week @ 2024-04-30 115/week @ 2024-05-07 135/week @ 2024-05-14 133/week @ 2024-05-21 133/week @ 2024-05-28 136/week @ 2024-06-04 229/week @ 2024-06-11 236/week @ 2024-06-18 217/week @ 2024-06-25 154/week @ 2024-07-02 141/week @ 2024-07-09 152/week @ 2024-07-16 137/week @ 2024-07-23 181/week @ 2024-07-30 170/week @ 2024-08-06

666 每月下载
用于 3 crates

MIT/Apache

41KB
1K SLoC

google-authz

ci pub doc version

本库为Google服务身份验证提供自动续期的令牌。
google-authz = tower-service + google身份验证

注意

身份验证流程 状态
API密钥 支持
OAuth 2.0客户端 支持
环境提供的服务帐户 支持
服务帐户密钥 支持

示例

默认

  • 作用域是 https://www.googleapis.com/auth/cloud-platform
  • 在以下位置查找凭证,优先查找第一个找到的位置
    • 一个JSON文件,其路径由 GOOGLE_APPLICATION_CREDENTIALS 环境变量指定。
    • 在gcloud命令行工具已知位置的一个JSON文件。
    • 在Google Compute Engine上,它从元数据服务器获取凭证。
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;

自定义

无认证

let credentials = Credentials::builder().no_credentials().build().await.unwrap();
let service = GoogleAuthz::builder(service).credentials(credentials).build().await;

API密钥

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文件

let credentials = Credentials::builder().json_file(json_file).build().await.unwrap();
let service = GoogleAuthz::builder(service).credentials(credentials).build().await;

元数据

let credentials = Credentials::builder().metadata(None).build().await.unwrap();
let service = GoogleAuthz::builder(service).credentials(credentials).build().await;

作用域

let credentials = Credentials::builder().scopes(scopes).build().await.unwrap();
let service = GoogleAuthz::builder(service).credentials(credentials).build().await;

tonic 一起

当与tonic crate一起使用时,请启用 tonic 功能。

#[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(())
}

完整代码可在此处找到 这里.

许可证

根据您的选择,在 Apache许可证,版本2.0MIT许可证 下获得许可。

依赖关系

~13–25MB
~453K SLoC