如何用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月26日
  • 摇摇晃晃照样子写词语,照样子写词语。例:隐隐约约

    技术摇摇晃晃照样子写词语,照样子写词语。例:隐隐约约A 挨挨挤挤摇摇晃晃照样子写词语、 安安稳稳、 彬彬济济、期期艾艾B 蹦蹦跳跳、 比比划划、 病病歪歪C 葱葱茏茏、 痴痴呆呆、 层层叠叠 、苍苍茫茫、楚楚谡谡、 抽抽

    生活 2021年10月25日
  • 对孩子的期望和鼓励的话,鼓励孩子学习进步的话十个字

    技术对孩子的期望和鼓励的话,鼓励孩子学习进步的话十个字文:花样年华 原创:花熹(cyp4290) 金秋时节,清风送爽,菊花遍地,开学的集结号即将吹起!孩子们,你们新的征程即将开始了! 陈老师忍不住又要把几句叮咛

    生活 2021年10月21日
  • 怎么使用Python构建可扩展的社交媒体情感分析服务

    技术怎么使用Python构建可扩展的社交媒体情感分析服务本篇文章为大家展示了怎么使用Python构建可扩展的社交媒体情感分析服务,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。探索

    攻略 2021年10月26日
  • Redis持久化的方法是什么

    技术Redis持久化的方法是什么本篇内容主要讲解“Redis持久化的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redis持久化的方法是什么”吧!RDB持久化Re

    攻略 2021年11月4日
  • 如何分析python中有序可变的数据集合List

    技术如何分析python中有序可变的数据集合List如何分析python中有序可变的数据集合List,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。列表是一个

    攻略 2021年12月4日