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

相关推荐

  • 河南十三届ICPC部分题解

    技术河南十三届ICPC部分题解 河南十三届ICPC部分题解A.祝融传火
    输入之后,暴力枚举\((x,y)\)判断即可
    #include bits/stdc++.h
    using namespace std

    礼包 2021年10月20日
  • JavaScript history对象举例分析

    技术JavaScript history对象举例分析这篇文章主要介绍“JavaScript history对象举例分析”,在日常操作中,相信很多人在JavaScript history对象举例分析问题上存在疑惑,小编查阅

    攻略 2021年11月29日
  • MySQL如何在线开启/关闭GTID

    技术MySQL如何在线开启/关闭GTID小编给大家分享一下MySQL如何在线开启/关闭GTID,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一

    攻略 2021年11月6日
  • MongoDB和MySQL的区别有哪些

    技术MongoDB和MySQL的区别有哪些这篇文章主要讲解了“MongoDB和MySQL的区别有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MongoDB和MySQ

    攻略 2021年12月2日
  • 如何理解epoll原理

    技术如何理解epoll原理这篇文章将为大家详细讲解有关如何理解epoll原理,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。epoll的系统调用很简单,只有三个,其定义如下

    攻略 2021年11月19日
  • LINUX图形化如何安装ORACLE

    技术LINUX图形化如何安装ORACLE这篇文章给大家分享的是有关LINUX图形化如何安装ORACLE的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。光盘加载操作系统mkdir /mnt/cdr

    攻略 2021年11月10日