9个版本
0.1.1 | 2022年5月8日 |
---|---|
0.1.0-alpha.10 | 2021年8月15日 |
0.1.0-alpha.9 | 2020年1月17日 |
0.1.0-alpha.8 | 2019年12月30日 |
#294 in 身份验证
1,025 每月下载量
用于 actix-web-middleware-cogn…
21KB
253 代码行
Rust库,用于验证AWS Cognito签发的Json Web Tokens
安装
jsonwebtokens-cognito = "0.1.0-alpha"
用法
let keyset = KeySet::new("eu-west-1", "my-user-pool-id")?;
let verifier = keyset.new_id_token_verifier(&["client-id-0", "client-id-1"])
.string_equals("custom_claim0", "value")
.string_equals("custom_claim1", "value")
.build()?;
let claims = keyset.verify(token, &verifier).await?;
此库基于jsonwebtokens令牌验证器。
密钥集在验证第一个令牌时将从适当的.jwks url获取,或者,也可以通过调用keyset.prefetch_jwks()
来预先加载缓存
let keyset = KeySet::new("eu-west-1", "my-user-pool-id")?;
keyset.prefetch_jwks().await?;
如果您需要在非异步上下文中执行令牌验证,或者不希望在验证令牌时允许网络I/O,那么如果您已显式预取了jwks密钥集,则可以使用try_verify
验证令牌
let keyset = KeySet::new("eu-west-1", "my-user-pool-id")?;
keyset.prefetch_jwks().await?;
let verifier = keyset.new_id_token_verifier(&["client-id-0", "client-id-1"])
.string_equals("custom_claim0", "value")
.string_equals("custom_claim1", "value")
.build()?;
let claims = keyset.try_verify(token, verifier).await?;
try_verify()如果在预取中未找到所需的密钥,将返回CacheMiss错误
密钥集是Send安全的,因此可以在多线程服务器中进行身份验证。
示例
验证AWS Cognito访问令牌
let keyset = KeySet::new(AWS_REGION, AWS_POOL_ID)?;
let verifier = keyset.new_access_token_verifier(&[AWS_CLIENT_ID]).build()?;
keyset.verify(&token_str, &verifier).await?;
验证AWS Cognito身份令牌
let keyset = KeySet::new(AWS_REGION, AWS_POOL_ID)?;
let verifier = keyset.new_id_token_verifier(&[AWS_CLIENT_ID]).build()?;
keyset.verify(&token_str, &verifier).await?;
验证带有自定义声明的AWS Cognito访问令牌
let keyset = KeySet::new(AWS_REGION, AWS_POOL_ID)?;
let verifier = keyset.new_access_token_verifier(&[AWS_CLIENT_ID])
.string_equals("my_claim", "foo")
.build()?;
keyset.verify(&token_str, &verifier).await?;
有关如何验证自定义声明的更多示例,请参阅jsonwebtokens。
依赖项
~10–26MB
~463K SLoC