3个不稳定版本
0.5.0 | 2024年3月27日 |
---|---|
0.4.1 | 2024年3月25日 |
0.4.0 | 2024年3月24日 |
在认证中排名第247
每月下载量111次
33KB
724 行
Google ID令牌验证
一种简单的用户认证方法。基于https://crates.io/crates/google-jwt-verify的分支,侧重于最小化代码大小。
给定客户端ID和由JWT.io生成的JSON Web令牌,使用以下步骤验证令牌:https://developers.google.com/identity/gsi/web/reference/html-reference#server-side
Google的JSON Web密钥将根据返回的Cache-Control头自动获取和缓存。通过此库验证令牌的大多数请求将不会等待HTTP请求。
特性
为了简化构建,此crate选择不支持原生TLS。ring在获取签名密钥和签名验证时用于SSL加密。关于ring安全审计的更多信息,请参阅这里。
快速入门
//If you don't have a client id, get one from here: https://console.developers.google.com/
let client_id = "37772117408-qjqo9hca513pdcunumt7gk08ii6te8is.apps.googleusercontent.com";
let token = "...";// Obtain a signed token from Google
let client = Client::new(&client_id);
let id_token = client.verify_id_token(&token)?;
let greeting = authorize_token(&id_token);
// use authenticated token to authorize
fn authorize_token(token: &Token<IdPayload>) -> Option<String> {
match token {
Token {
payload: payload @ IdPayload {
email: Some(email), ..
},
..
} if TEST_USERS.contains(&email.as_str()) => {
Some(format!("hello {}", payload.name.as_ref().unwrap_or(email)))
}
_ => None,
}
}
问题
请注意,Google的OAuth实现没有很好地记录。在OAuth同意屏幕中的测试用户列表不构成授权白名单(其他用户也将被授予访问权限)。有关更多详细信息,请参阅issuetracker。
依赖项
~7–18MB
~333K SLoC