3 个版本
0.1.2 | 2021年7月30日 |
---|---|
0.1.1 | 2021年7月29日 |
0.1.0 | 2021年7月29日 |
#8 in #google-cloud-platform
27KB
593 行
gcpauth
Google Cloud Platform 服务器应用程序身份验证库。
安装
[dependencies]
gcpauth = 0.1.2
或者获取最新分支。
[dependencies]
gcpauth = { git = "https://github.com/yoshidan/gcpauth/", branch = "main"}
快速入门
use gcpauth::*;
#[tokio::main]
async fn main() -> Result<(), error::Error> {
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)
};
let ts = create_token_source(config).await?;
let token = ts.token().await?;
println!("token is {}",token.access_token);
Ok(())
}
create_token_source
会按以下顺序查找凭证,优先查找第一个找到的位置
- 一个由 GOOGLE_APPLICATION_CREDENTIALS 环境变量指定的路径的 JSON 文件。
- 一个 gcloud 命令行工具已知的位置的 JSON 文件。在 Windows 上,这是 %APPDATA%/gcloud/application_default_credentials.json。在其他系统上,$HOME/.config/gcloud/application_default_credentials.json。
- 在 Google Compute Engine 上,它会从元数据服务器获取凭证。
异步初始化
use gcpauth::*;
use tokio::sync::OnceCell;
static AUTHENTICATOR: OnceCell<Box<dyn gcpauth::token::TokenSource>> = OnceCell::const_new();
#[tokio::main]
async fn main() -> Result<(),error::Error> {
let ts = AUTHENTICATOR.get_or_try_init(|| {
gcpauth::create_token_source(gcpauth::Config {
audience: Some("https://spanner.googleapis.com/"),
scopes: None,
})
}).await?;
let token = ts.token().await?;
println!("token is {}",token.access_token);
Ok(())
}
支持的凭证
- 服务帐户(JWT)
- 服务帐户(OAuth 2.0)
- 授权用户
- 外部帐户
- Google 开发者控制台 client_credentials.json
支持的工作负载身份
https://cloud.google.com/iam/docs/workload-identity-federation
- AWS
- Azure Active Directory
- 本地 Active Directory
- Okta
- Kubernetes 集群
依赖项
~16–30MB
~549K SLoC