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_envnew_from_url。后者需要您提供JWKS密钥库的URL;前者将在运行时在环境变量JWKS_URL中查找。

一些繁琐的细节

本代码的作者是Tim Walls。他的互联网主页是snowgoons.ro

本代码在BSD 3-Clause开源许可下发布。不提供任何明示或暗示的保证。

依赖项

~31–44MB
~871K SLoC