如何用Nginx和Lua查JWT

技术怎么使用Nginx和Lua进行JWT校验这篇文章将为大家详细讲解有关怎么使用Nginx和Lua进行JWT校验,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Lua脚本这里的secre

这篇文章将为大家详细讲解有关怎么使用Nginx和左上臂进行JWT校验,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Lua脚本

这里的秘密我遇到了很大的坑。一开始直接从Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)后端项目中复制了密钥出来,但是一直提示签名不匹配:后来发现后端应用中使用base64解码相关方法,在左上臂脚本中增加了ngx.decode_base64(秘密)处理秘密后解决问题。其实到这里还没有解决问题,在后端调试代码的时候,发现后端密钥被译的结果是一串乱码,为了避免乱码的问题,通过https://www.base64encode.org/重新生成秘密才最终解决了问题。

如果你的项目中也遇到了这个签名不匹配:错误,需要排查一下后端在生成代币的时候,是否有对秘密进行译或者其它处理,在左上臂脚本中也要进行相应的处理。

怎么使用Nginx和Lua进行JWT校验

nignx.conf配置

- nginx-jwt.lua

localcjson=要求“cjson”

localjwt=require'resty.jwt '

-你的秘密

localsecret=' yoursecrethere '

-无需鉴权美国石油学会(美国石油协会)清单

本地no _ need _ token _ API _ list={ '/API/register ','/api/login'}

localhostignore _ URL(val)

forindex,valueinipairs(no _ need _ token _ API _ list)do

如果(值==val),则

返回真

结束

结束

returnfalse

结束

localM={}

functionM.auth()

ifignore _ URL(ngx。var。request _ uri)然后

返回

其他

结束

-required dauthorization request标头

local auth _ header=ngx。var。http _授权

ifauth_header==nilthen

ngx.log(ngx .警告,"无授权标题")

ngx.exit .HTTP_UNAUTHORIZED)

结束

-需要一个人

local_,_,token=string.find(auth_header),”承载%s(.)')

iftoken==nilthen

ngx.log(ngx .错误,"错过了"

ngx.exit .HTTP_UNAUTHORIZED)

结束

- decode_base64和后端保持一致

localjwt _ obj=jwt:验证(ngx。decode _ base64(秘密,令牌)

ifjwt_obj.verified==falsethen

ngx.log(ngx .错误,"无效令牌:".jwt_obj.reason)

ngx.status=ngx .HTTP _ UNAUTHORIZED

ngx.say(cjson.encode(jwt_obj))

ngx。标题。content _ type=' application/JSON;charset=utf-8 '

ngx.exit .HTTP_UNAUTHORIZED)

结束

结束

returnM

Dockerfile配置

worker _ process 1;

事件

{

worker _ connections1024

}

超文本传送协议(超文本传输协议的缩写)

{

Lua _ package _ path '/opt/Lua-resty-jwt/lib/?' lua';

上游后端

{

服务器192 .168 .1 .1:808080

}

access _ log/logs/nginx _ access。日志;

错误日志/log/nginx _ error。日志;

计算机网络服务器

{

列表80;

#后端美国石油学会(美国石油协会)接口代理

位置/api/

{

access_by_lua_block

{

localobj=require('nginx-jwt ')

obj.auth()

}

proxy _ pass http://后端;

proxy _ redirectoff

proxy _ set _ headerHost $主机

proxy _ set _ header rx-Real-IP $ remote _ addr;

proxy _ set _ header rx-forward-For $ proxy _ add _ x _ forward _ For;

}

}

}关于"怎么使用Nginx和左上臂进行JWT校验"这篇文章就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/150321.html

(0)

相关推荐

  • 在mysql如何查找效率慢的SQL语句

    技术在mysql如何查找效率慢的SQL语句这篇文章主要介绍在mysql如何查找效率慢的SQL语句,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、MySQL数据库有几个配置选项可以帮助我们及时捕获

    攻略 2021年10月29日
  • golang 相同结构体比较方式比较

    技术golang 相同结构体比较方式比较 golang 相同结构体比较方式比较golang 相同结构体比较方式比较
    使用==
    示例:
    type Student struct {Name stringAg

    礼包 2021年12月24日
  • 11.创建Router路由,路由优化)

    技术11.创建Router路由,路由优化) 11.创建Router路由(路由优化)路由器中处理
    1.创建routes文件夹
    express中的Router(创建route文件夹)作用就是为了方便我们更好

    礼包 2021年12月3日
  • 如何连接Flex数据库行

    技术如何连接Flex数据库行这篇文章主要介绍如何连接Flex数据库行,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Flex应用程序并不直接与一个Flex数据库进行连接,所以你需要使用某种类型的服务

    攻略 2021年12月9日
  • 战时管制是指,什么叫战时状态战时措施

    技术战时管制是指,什么叫战时状态战时措施它是指当国家安全受到严重威胁时,将军队处于最高级的备战准备,并向全国发布战争动员令的一种战斗紧张形势战时管制是指。交战国之间的敌对状态。一旦进入战争状态,交战国之间的外交关系、经济

    生活 2021年10月29日
  • 野心勃勃是什么意思,“雄心壮志”是什么意思

    技术野心勃勃是什么意思,“雄心壮志”是什么意思远大的理想和抱负,宏伟的志愿野心勃勃是什么意思。出处:朝代:晋朝作者:陆机原文:《吊魏武帝文》:雄心摧于弱情,壮图终于哀志。白话释义:雄心挫败在弱情,壮图最终在哀志。成语用法

    生活 2021年10月24日