7个版本
1.0.0-alpha.5 | 2022年5月23日 |
---|---|
1.0.0-alpha.4 | 2022年4月12日 |
1.0.0-alpha.3 | 2022年2月18日 |
1.0.0-alpha.2 | 2021年12月30日 |
0.0.1 | 2021年5月8日 |
#462 in 身份验证
666 每月下载
用于 3 crates
41KB
1K SLoC
google-authz
本库为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上,它从元数据服务器获取凭证。
- 一个JSON文件,其路径由
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.0 或 MIT许可证 下获得许可。
依赖关系
~13–25MB
~453K SLoC