无需后端接口,只用nginx就可以实现token验证,实现资源的授权访问
- 安装jwt模块ngx_http_auth_jwt_module
安装此模块需要源文件编译安装,如果已经通过包管理工具apt-get、yum等安装了nginx,建议先卸载
下载nginx源文件(选择较高版本)
wget http://nginx.org/download/nginx-1.26.2.tar.gz
下载jwt模块源文件
git clone https://github.com/tizpuppi/ngx_http_auth_jwt_module
进入nginx源文件目录,执行下面命令添加模块,其他配置自行添加
./configure --with-http_ssl_module --add-module=../ngx_http_auth_jwt_module
编译安装 make && make install
如果执行过程遇到缺少某些库,自行安装
- 修改nginx配置文件
上实例解释,下面配置是给autoindex的资源添加认证
location /log {
try_files $uri $uri/ =404;
autoindex on;
autoindex_format json; #我需要在别的网站展示文件目录,供浏览和下载,转化为json给前端对接
auth_jwt "Protected resource"; #开启jwt认证
auth_jwt_key_file auth/jwt.key; #jwt秘钥文件
auth_jwt_alg HS256; #jwt加密算法类型
}
使用对称加密方式,秘钥文件中仅需要写上秘钥即可,如果是非对称加密,秘钥文件可能需要json格式,没有实测。
最后,实际访问资源时需要在请求Header中加上'Authorization: Bearer <jwt>',这是默认方式,完全够用,如果想换别的字段或者用cookie,自行研究。我有空再补充