3个版本 (重大更新)
0.3.0 | 2022年4月15日 |
---|---|
0.2.0 | 2021年6月12日 |
0.1.0 | 2021年6月5日 |
#1215 in HTTP服务器
14KB
239 行
jwt-actix4
与actix-web 4.0配合使用的JWT载体身份验证
资源 | 位置 |
---|---|
文档 | https://jwt-actix4.snowgoons.ro/jwt_actix/ |
GitLab | https://gitlab.com/snowgoonspub/jwt-actix4 |
为什么?
目前市面上有一些实现JWT载体身份验证令牌验证的crate,但遗憾的是,它们与当前的actix-web 4.0 beta版本不兼容,无疑这些问题将在未来的某个时候得到解决。
然而,由于tokio的依赖性问题,我需要一个真正可行的解决方案,而且最好是使用简单的crate。因此,就有了这个crate。
如何使用
该crate提供了一个简单的中间件JwtAuth
,您可以将它插入到您的ActixWeb管道中
use jwt_actix::{JwtAuth, CheckJwtValid};
...
#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(move || {
App::new()
.wrap(JwtAuth::new_from_env(CheckJwtValid).unwrap())
}).bind(addr)?
.run()
.await
}
在每次请求中,中间件都会检查请求中的JWT载体身份验证令牌。如果找到且验证正确,它会调用您提供的验证函数以检查请求是否应该被处理。
也可以使用默认的验证函数CheckJwtValid
,该函数会在令牌有效时允许请求(即签名检查通过),在令牌无效时拒绝请求。
JWKS密钥库
中间件期望下载一个JWKS密钥库文件,用于验证签名所需的证书。
中间件有两个构造函数:new_from_env
和new_from_url
。后者需要您提供JWKS密钥库的URL;前者将在运行时在环境变量JWKS_URL
中查找。
一些繁琐的细节
本代码的作者是Tim Walls。他的互联网主页是snowgoons.ro。
本代码在BSD 3-Clause开源许可下发布。不提供任何明示或暗示的保证。
依赖项
~31–44MB
~871K SLoC