如何用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如何配置远程连接

    技术MYSQL如何配置远程连接这篇文章主要介绍MYSQL如何配置远程连接,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!开启 MySQL 的远程登陆帐号有两大步:1、确定服务器上的防火墙没有阻止 3

    攻略 2021年11月1日
  • javascript里的style是啥类型(设置里的javascript是什么意思)

    技术JavaScript中style指的是什么意思这篇文章主要介绍了JavaScript中style指的是什么意思,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解

    攻略 2021年12月22日
  • Qt5.14与OpenCV4.5中图片的增强效果是怎样的

    技术Qt5.14与OpenCV4.5中图片的增强效果是怎样的这篇文章给大家介绍Qt5.14与OpenCV4.5中图片的增强效果是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、建立Qt工程1

    攻略 2021年11月29日
  • pyhanlp中的命名实体识别是怎样的

    技术pyhanlp中的命名实体识别是怎样的本篇文章给大家分享的是有关pyhanlp中的命名实体识别是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。对于

    攻略 2021年12月4日
  • 大戴礼记,什么是辟谷

    技术大戴礼记,什么是辟谷说到辟谷大戴礼记,相信大家多数人都会认为,辟谷就是绝食,其实辟谷是一种养生方法,而绝食是属于一种心理障碍,或者是疾病引起的无法正常进食。“辟谷”源自道家养生中的“不食五谷”,是古人常用的一种养生方

    生活 2021年10月28日
  • centos8上安装mysql5.6

    技术centos8上安装mysql5.6 centos8上安装mysql5.61.下载5.6
    选择5.6.45,Red Hat Enterprise Linux,Linux 7https://dev.m

    礼包 2021年11月1日