基于nginx的token认证
Nginx 的 token 认证是基于集成了 nginx+lua 的 openresty 来实现的.
- 环境: centos 7
- 部署方式: 增量部署(不影响原 nginx 版本)
- 版本: openresty/1.13.6.2
- 启动命令:1.原版本通过nginx命令启动.
2.新版本通过openresty命令启动.
需求:
对指定域名增加 http 请求头(header)验证,
请求头为 xxxx=xxxxx 形式.
如果验证不通过,返回 403 ‘请求头验证失败 或 Error request forbidden ’
实际代码示列:
server {
listen 80;
server_name www.aaa.com;
access_log logs/host.access.log main;
location /a/b/c {
access_by_lua '
local args = ngx.req.get_headers(); --获取请求中 header 头的列表.
local token1 = args["appid"]; --取出 header 头中key为 appid 的值.
local token2 = "123456"; --定义一个局部变量.
local errs = "oh,Only Authorized Request will be Processe" --定义错误提示消息
if not token1 then
ngx.status = ngx.HTTP_FORBIDDEN --返回错误码
ngx.say(errs) --返回错误消息
ngx.exit(200) -- 跟以上两个连用,固定写法
end
if token1 ~= token2 then
ngx.status = ngx.HTTP_FORBIDDEN
ngx.say(errs)
ngx.exit(200)
else
return
end
';
proxy_pass http://www.google.com;
}
}
实施过程中的坑:
背景介绍:
1.我是拷贝的原 nginx 下的配置文件,原 nginx 版本为 1.12.2.
2.测试环境为 openresty 中的nginx,版本为 1.13.6.2
我以为配置文件是通用的,虽然原版本 nginx 的配置文件在新版本中不兼容的部分,我都替换了,但还是产生了奇怪的问题...
- 测试环境通过,生产环境无论怎么修改配置都无法通过,中间浪费了很多时间,最后基于新 nginx 配置文件重写了整个配置,解决了问题.
致谢:
基于nginx的token认证的更多相关文章
- token 与 基于JWT的Token认证
支持跨域访问,无状态认证 token特点 支持跨域访问: Cookie是不允许垮域访问的,这一点对Token机制是不存在的,前提是传输的用户认证信息通过HTTP头传输 无状态(也称:服务端可扩展行): ...
- 基于JWT的Token认证机制及安全问题
[干货分享]基于JWT的Token认证机制及安全问题 https://bbs.huaweicloud.com/blogs/06607ea7b53211e7b8317ca23e93a891
- iOS 开发之基于JWT的Token认证机制及解析
在移动端和服务端通信中,一般有两种认证方式:token 和 session. 1.session/cookie 认证机制: 在服务端创建一个Session对象,同时在客户端的浏览器端创建一个Cooki ...
- 简单说说基于JWT的token认证方式
一.什么是认证 好多人不知道什么是认证,认证,其实就是服务端确认用户身份.Http协议是无状态的,客户端发送一条请求,服务端返回一条响应,二者就算做成一单买卖,一拍两散.在很久以前,互联网所能提供的服 ...
- 基于JWT的token认证机制
1. 一个JWT实际上就是一个字符串,由三部分组成 头部,载荷,签名 头部:事描述类型,签名,算法等 可以被表示成一个JSON对象 载荷:存放有效信息的地方 包含三个部分 (1)标准注册中的声明-建议 ...
- Java实现基于token认证
随着互联网的不断发展,技术的迭代也非常之快.我们的用户认证也从刚开始的用户名密码转变到基于cookie的session认证,然而到了今天,这种认证已经不能满足与我们的业务需求了(分布式,微服务).我们 ...
- JWT的优点和实现Token认证的安全问题
JWT的优点和实现Token认证的安全问题 一.什么是JWT JWT——Json web token 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准,可实现无状态.分布式的Web应 ...
- 基于token与基于服务器的身份认证
1.基于服务器的身份认证 我们清楚 http 协议是无状态的,也就是说,如果我们已经认证了一个用户,那么他下一次请求的时候,服务器不知道我是谁,我们就必须要再次认证. 我们与浏览器交互时,比如说登陆成 ...
- laravel5.7 前后端分离开发 实现基于API请求的token认证
最近在学习前后端分离开发,发现 在laravel中实现前后台分离是无法无法使用 CSRF Token 认证的.因为 web 请求的用户认证是通过Session和客户端Cookie的实现的,而前后端分离 ...
随机推荐
- 云计算之路-试用Azure-飞流直下三千尺:实测虚拟机磁盘IO
Azure的Temporary Storage(临时存储)磁盘的IO速度曾经是个传说,只知道它很快,但不知道究竟有多快.而Azure中国的情况怎么样,我们来实测一下. 测试环境:Azure上海机房,1 ...
- 重载<<和>>
在C++编程中实现数据的输入/输出能够用cin>>ch/cout<<ch; 可是使用cin>>ch或cout<<ch并不能实现一些特殊的数据的输入或者输 ...
- DNS message解析
案例吐个槽,命苦啊,要自己动手解包. 另外,这里的内容是半路找来的,如果有冲突,自行翻阅rfc1035.我还没校正过. The Structure 如下图: 所有的DNS message都包含了下面这 ...
- GDI+学习笔记(九)带插件的排序算法演示器(MFC中的GDI+实例)
带插件的排序算法演示器 请尊重本人的工作成果,转载请留言.并说明转载地址,谢谢. 地址例如以下: http://blog.csdn.net/fukainankai/article/details/27 ...
- Mac系统使用命令行快捷打开Sublime
本篇文章由:http://xinpure.com/use-command-line-shortcuts-to-open-the-mac-system-sublime/ 方法一 使用软链接 ln -s ...
- 记一次.net core调用SOAP接口遇到的问题
背景 最近需要将一些外部的Web Service及其他SOAP接口的调用移到一个独立的WebAPI项目中,然后供其他.Net Core项目调用.之前的几个Web Service已经成功迁 ...
- STL容器分析--deque
deque,故名思义,双向队列.可以在头尾进行插入删除. 而STL中采用了链表+线性表的数据结构来实现deque,因而除了满足双向队列的特点以外,还支持随机访问. 下面,贴一段代码. 总览:双向队列是 ...
- 本体论与OWL
http://semanticweb.org/wiki/Main_Page.html http://owl.man.ac.uk/documentation.shtml https://zh.wiki ...
- gdi软光栅化注意事项
1,opengl viewport原点在左下角,而gdi画图api原点在左上角,所以在实现了整个opengl管线,最后将点通过gdi函数画到屏幕时要进行临时转化. 2,注意gdi画点的api传入的颜色 ...
- atitit.Sealink2000国际海运信息管理系统
atitit.Sealink2000国际海运信息管理系统 操作手册 目录 第一章 使用说明 第一节 系统登录 双击桌面的系统执行程序图标,进入选择数据库的对话框,如图1-1所示.选择相应的数据库后,点 ...