如何用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)

相关推荐

  • 未来可期的意思,人间值得,未来可期是什么意思

    技术未来可期的意思,人间值得,未来可期是什么意思意思是未来是可以值得去期盼的未来可期的意思,人世间还是有很多美好值得我们去努力去等待去追求,不要灰心丧气。要保持积极乐观的心态,开心地度过每一天。扩展知识:积极乐观的句子有

    生活 2021年10月28日
  • genie是什么程序(genie中文是啥名字)

    技术Genie的特点是什么本篇内容主要讲解“Genie的特点是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Genie的特点是什么”吧!一 数据平台的发展简介

    攻略 2021年12月20日
  • python的tkinter如何实现简单登录

    技术python的tkinter如何实现简单登录这篇文章主要介绍“python的tkinter如何实现简单登录”,在日常操作中,相信很多人在python的tkinter如何实现简单登录问题上存在疑惑,小编查阅了各式资料,

    攻略 2021年12月9日
  • 大数据治理中如何搭建大数据探索平台

    技术大数据治理中如何搭建大数据探索平台这篇文章给大家介绍大数据治理中如何搭建大数据探索平台,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在数据治理中,数据探索服务的价值在初期往往是被忽视的,但是随着

    攻略 2021年12月10日
  • Shuffle原理及对应的Consolidation优化机制是怎样的

    技术Shuffle原理及对应的Consolidation优化机制是怎样的这篇文章给大家介绍Shuffle原理及对应的Consolidation优化机制是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所

    攻略 2021年12月3日
  • CentOS 7.3上SQL Server vNext CTP 1.2如何安装

    技术CentOS 7.3上SQL Server vNext CTP 1.2如何安装这篇文章给大家分享的是有关CentOS 7.3上SQL Server vNext CTP 1.2如何安装的内容。小编觉得挺实用的,因此分享

    攻略 2021年11月15日