Openresty(十五)通过lua实现令牌校验

一    模块地址

(1)插件安装

+++++++++++++"安装方式"+++++++++++++

1.opm安装  -->'默认'安装的位置

opm get SkyLothar/lua-resty-jwt

2.源码安装,进行copy  -->'不建议'

Openresty(十五)通过lua实现令牌校验

参考博客 

网关权限控制

(2)常用方法介绍

①  sign

功能: 生成'jwt token'

备注: 无法设置'token的有效期',仅仅'作为测试'

说明: 可以通过'高级语言'的代码在生成'token'设置'expire、issuers'

变相: openresty 的jwt插件并没有提供'时间过期'的校验,可以通过将'token'存到cookies中变相的增加'生命时间'

Openresty(十五)通过lua实现令牌校验

②    verify

核心:关注'成功'和'失败'的jwt_obj

Openresty(十五)通过lua实现令牌校验

Openresty(十五)通过lua实现令牌校验

③    claim_spec常用选项

说明:该选项是一个'lua table'

Openresty(十五)通过lua实现令牌校验

④    sign-jwe

Openresty(十五)通过lua实现令牌校验

二    实现

Openresty(十五)通过lua实现令牌校验

需求: 验证通过,允许用户'查询数据',暂时不涉及'openresty的请求阶段的access'

(1) 安装jwt插件

Openresty(十五)通过lua实现令牌校验

Openresty(十五)通过lua实现令牌校验

Openresty(十五)通过lua实现令牌校验(2)lua高效实现

①    生成token

Openresty(十五)通过lua实现令牌校验

备注:生产最好存储在'localStorage'本地存储中

Openresty(十五)通过lua实现令牌校验②    进行token校验

Openresty(十五)通过lua实现令牌校验

1)成功

Openresty(十五)通过lua实现令牌校验

2)key密钥错误导致失败

Openresty(十五)通过lua实现令牌校验

说明:获取最好是payload字段

3)token过期导致失败

说明: '30s'有效期

注意: '时间'的问题 -->'差8h'

Openresty(十五)通过lua实现令牌校验

 4)base编码问题

Openresty(十五)通过lua实现令牌校验

Openresty(十五)通过lua实现令牌校验  

Django时间Field与datetime与time解读

Django - 日期、时间字段

(3)生产场景使用

Openresty(十五)通过lua实现令牌校验

①  check.lua 模块

Openresty(十五)通过lua实现令牌校验

Openresty(十五)通过lua实现令牌校验 

Openresty(十五)通过lua实现令牌校验②  nginx.conf配置

#  openresty作为各种service的api网关

location /service1 {
     # 核心是-->access_by_lua
     access_by_lua '
     local jwt = require("lua.check")
     jwt.auth()';
     default_type application/json;
     proxy_pass http://tomcat;
}

③    关键字与状态码 

ngx.OK,                    -->"200"

ngx.ERROR,                 -->"500"

ngx.HTTP_NOT_FOUND,        -->"404"

ngx.HTTP_MOVED_TEMPORARILY -->"302"

ngx.HTTP_UNAUTHORIZED      -->"401"

++++++++++++++++++"其它方式"++++++++++++++++++

return  401 "认证不通过"

ngx.status = 401

openresty找不到静态文件

Java实现token的生成与验证-登录功能

③④⑤⑥

上一篇:nginx+lua+redis实现网关层面服务切换[openresty版]


下一篇:jcmd命令