apisix网关+golang服务 jwt验证

2023-11-08

golang服务使用jwt生成token,apisix解析并验证token

1、配置apisix网关jwt

(1)、在 apisix dashboard 中 新建路由

(2)、新建路由时开启jwt插件

(3)、配置jwt插件

{
  "algorithm": "HS256",
  "base64_secret": false,
  "disable": false,
  "exp": 86400,
  "key": "web-user",
  "secret": "e23f083555e8dd81c886549beb49b9e3"
}

(4)、提交路由

2、编写golang服务代码

引入jwt包:

go get github.com/golang-jwt/jwt

生成token

playloads:token中需要携带的登录信息,可根据项目需要自己添加

secret:生成token密钥 必须和apisix配置保持一致

key:和apisix配置中的key保持一致 

func CreateToken(playloads map[string]interface{},secret string,key string) (string, error) {
	claims := make(jwt.MapClaims)
	var iat int64 = time.Now().Unix()
	claims["exp"] = iat +8600
	claims["iat"] = iat
	claims["key"] = key
	for k, v := range playloads {
		claims[k] = v
	}

	token := jwt.New(jwt.SigningMethodHS256)
	token.Claims = claims

	return token.SignedString([]byte(secret))
}

3:获取到token后请求,有三种方式

(1)、请求地址中携带token

http://127.0.0.1:9080/index.html?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1c2VyLWtleSIsImV4cCI6MTU2NDA1MDgxMX0.Us8zh_4VjJXF-TmR5f8cif8mBU7SuefPlpxhH0jbPVI -i
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 13175
...
Accept-Ranges: bytes

<!DOCTYPE html>
<html lang="cn">
...

(2)、使用cookie中携带token

$ curl http://127.0.0.1:9080/index.html --cookie jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1c2VyLWtleSIsImV4cCI6MTU2NDA1MDgxMX0.Us8zh_4VjJXF-TmR5f8cif8mBU7SuefPlpxhH0jbPVI -i
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 13175
...
Accept-Ranges: bytes

(3)、放在请求header中  Authorization:token

$ curl http://127.0.0.1:9080/index.html -H 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1c2VyLWtleSIsImV4cCI6MTU2NDA1MDgxMX0.Us8zh_4VjJXF-TmR5f8cif8mBU7SuefPlpxhH0jbPVI' -i
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 13175
...
Accept-Ranges: bytes

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

apisix网关+golang服务 jwt验证 的相关文章

  • Grails 3.x bootRun 失败

    我正在尝试在 grails 3 1 11 中运行一个项目 但出现错误 失败 构建失败并出现异常 什么地方出了错 任务 bootRun 执行失败 进程 命令 C Program Files Java jdk1 8 0 111 bin java
  • 如何为最终用户方便地启动Java GUI程序

    用户想要从以下位置启动 Java GUI 应用程序Windows 以及一些额外的 JVM 参数 例如 javaw Djava util logging config file logging properties jar MyGUI jar
  • 为什么 i++ 不是原子的?

    Why is i Java 中不是原子的 为了更深入地了解 Java 我尝试计算线程中循环的执行频率 所以我用了一个 private static int total 0 在主课中 我有两个线程 主题 1 打印System out prin
  • Java EE:如何获取我的应用程序的 URL?

    在 Java EE 中 如何动态检索应用程序的完整 URL 例如 如果 URL 是 localhost 8080 myapplication 我想要一个可以简单地将其作为字符串或其他形式返回给我的方法 我正在运行 GlassFish 作为应
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 操作错误不会显示在 JSP 上

    我尝试在 Action 类中添加操作错误并将其打印在 JSP 页面上 当发生异常时 它将进入 catch 块并在控制台中打印 插入异常时出错 请联系管理员 在 catch 块中 我添加了它addActionError 我尝试在jsp页面中打
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 斯坦福 NLP - 处理文件列表时 OpenIE 内存不足

    我正在尝试使用斯坦福 CoreNLP 中的 OpenIE 工具从多个文件中提取信息 当多个文件 而不是一个 传递到输入时 它会给出内存不足错误 All files have been queued awaiting termination
  • 十进制到八进制的转换[重复]

    这个问题在这里已经有答案了 可能的重复 十进制转换错误 https stackoverflow com questions 13142977 decimal conversion error 我正在为一个类编写一个程序 并且在计算如何将八进
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • 如何将 pfx 文件转换为 jks,然后通过使用 wsdl 生成的类来使用它来签署传出的肥皂请求

    我正在寻找一个代码示例 该示例演示如何使用 PFX 证书通过 SSL 访问安全 Web 服务 我有证书及其密码 我首先使用下面提到的命令创建一个 KeyStore 实例 keytool importkeystore destkeystore
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • 加密 JBoss 配置中的敏感信息

    JBoss 中的标准数据源配置要求数据库用户的用户名和密码位于 xxx ds xml 文件中 如果我将数据源定义为 c3p0 mbean 我会遇到同样的问题 是否有标准方法来加密用户和密码 保存密钥的好地方是什么 这当然也与 tomcat
  • Java Integer CompareTo() - 为什么使用比较与减法?

    我发现java lang Integer实施compareTo方法如下 public int compareTo Integer anotherInteger int thisVal this value int anotherVal an
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • 在mockito中使用when进行模拟ContextLoader.getCurrentWebApplicationContext()调用。我该怎么做?

    我试图在使用 mockito 时模拟 ContextLoader getCurrentWebApplicationContext 调用 但它无法模拟 here is my source code Mock org springframewo
  • 有没有办法为Java的字符集名称添加别名

    我收到一个异常 埋藏在第 3 方库中 消息如下 java io UnsupportedEncodingException BIG 5 我认为发生这种情况是因为 Java 没有定义这个名称java nio charset Charset Ch

随机推荐

  • 【Windows API】获取卷标、卷名

    1 卷 gt 卷标 使用FindFirstVolume 和FindNextVolume 函数体系 枚举系统所有卷 Volume 的例子 然后获取卷标 卷类型 这个方式可以枚举出没有驱动器号 卷标 的卷 int TestMode1 HANDL
  • 国信证券笔试题总分120分

    国信证券笔试题总分120分 1 选择题60分 20题 单选 10 每题3分 多选 10 每题3分 2 业务题 每题4分总共20分 2 1 post get请求区别 后退按钮 刷新 无害 数据会被重新提交 浏览器应该告知用户数据会被重新提交
  • 微软DeepSpeed Chat震撼发布,一键RLHF训练千亿级大模型

    一键解锁千亿级ChatGPT 轻松省钱15倍 众所周知 由于OpenAI太不Open 开源社区为了让更多人能用上类ChatGPT模型 相继推出了LLaMa Alpaca Vicuna Databricks Dolly等模型 但由于缺乏一个支
  • PostgreSQL数据库性能监控手段之慢SQL、死锁

    之前接触PostgreSQL数据库甚少 此前经常使用mysql db2 直至入职当前某安全公司后 发现数据库都采用PostgreSQL 由于负责性能测试方向 经常需要诊断数据库方面是否存在性能问题 于是整理了PostgreSQL设置慢SQL
  • 接口调用失败,失败原因:在 ServiceModel 客户端配置部分中,找不到引用协定的默认终结点元素

    我的程序中 已经配置了webserivce了 但是无法再开发环境使用 我想拿到测试环境使用 而webservice又只能在开发环境调用 这个时候 为了解决这种尴尬问题 我只能先将就着用开发时的webservice 在我的web config
  • 18款最佳Bug跟踪管理系统

    对于开发者来说 Bug 往往是他们最头疼的问题 有些 Bug 会隐藏的很深 很难发现 甚至用户已经使用了才出现 这样真是赔了名声又折钱 为了让开发者更早地发现和消灭 Bug 本文收集了 18 款最佳的 Bug 处理应用程序 这些系统有收费也
  • 本地文件上传到linux服务器的几种方法

    本文介绍几种常见的方法 把文件上传到Linux服务器中 飓风科技常见有使用 scp命令 xshell软件里的xftp程序 U盘挂载 服务器自带的lrzsz程序 一 scp使用说明 1 把本机的文件传给目的服务器 1scp get66 pca
  • Linux 安装/卸载 Minio

    安装 创建目录 root t2 local mkdir minio root t2 local cd minio root t2 minio mkdir data 下载 root t2 minio wget https dl min io
  • vue + iview项目构建

    vue js官网 iview vue cli PS vue js有著名的全家桶系列 包含了vue router vuex vue resource 再加上构建工具vue cli 就是一个完整的vue项目的核心构成 使用Vue cli是快速构
  • OAuth2.0 - 刷新令牌

    刷新令牌 Refresh Token 刷新令牌是用于获取访问令牌的凭据 刷新令牌由授权服务器颁发给客户端 用于在当前访问令牌失效或过期时获取新的访问令牌 或者获取具有相同或更窄范围的附加访问令牌 访问令牌可能具有更短的范围 生命周期和少于资
  • Long、Integer、Byte, Double, Float或 Short类型的比较

    开发遇到的一些基础问题 记录一下 场景 比较Long类型的大小 错误用法 或者 正确用法 Long compareTo 解释 Long是一个引用类型 不能通过 进行比较大小 基本数据类型才可以 对于Long Integer Byte Dou
  • 关于java后端Long类型传递雪花ID到前端导致精度不一致和数据不一致问题

    我们数据库使用的是Bigint存放的是雪花ID 我们java实体类使用的是Long类型 我们后端查询的数据库跟我们返回到前端的ID数据不一致 问题 我们数据库存放的是雪花ID java的Long类型可以取值 但是JSON序列号的时候就超过取
  • 深度学习面试:用猫和狗的数据做图像分类,分类的效果不好怎么办?

    首先 我们可以通过训练集和测试集的误差曲线来判断 1 如果训练集精度和测试集精度都不高 则曲线符合欠拟合的表现 1 数据 数据集有较多的标注错误 2 训练模型 可以更换模型 增加训练轮次 减小学习率或使用衰减学习率等方式进行改善 2 如果测
  • 测试工程师须知——自动化测试主要分为哪几类

    近几年随的技术加快前进 人工智能已经悄然无息的来到了我们的身边 可谓是不管是生活 工作等等的一切什么都有人工智能的出现 那对于IT行业或者更详细点的说对于软件测试这一职位是种什么样的变化呢 一 什么自动化测试 什么是自动化测试 这个问题可能
  • stm32f103编写GPIO初始化结构体和初始化函数

    初始化结构体 typedef struct uint16 t GPIO Pin uint16 t GPIO Speed uint16 t GPIO Mode GPIO InitTypeDef 里面有端口 模式和输出模式时的最大速度 再通过两
  • 深入理解Java虚拟机

    什么是Java虚拟机 作为一个Java程序员 我们每天都在写Java代码 我们写的代码都是在一个叫做Java虚拟机的东西上执行的 但是如果要问什么是虚拟机 恐怕很多人就会模棱两可了 在本文中 我会写下我对虚拟机的理解 因为能力所限 可能有些
  • JNI问题

    1 jbyte不能直接替换uint8 t
  • Ubuntu测试使用速腾RS-Lidar-16

    一 获取代码 在想放代码的地方创建文件夹 建议在主目录中 打开终端 输入 mkdir p lidar src cd lidar src git clone https github com RoboSense LiDAR rslidar s
  • mybatis-generator结合freemarker生成简单的service

    首先附上项目的github地址 点击打开链接 第一步 在generatorConfig xml里添加标签 点击进入xml文件对应的dtd文件 在contex那添加需要的标签
  • apisix网关+golang服务 jwt验证

    golang服务使用jwt生成token apisix解析并验证token 1 配置apisix网关jwt 1 在 apisix dashboard 中 新建路由 2 新建路由时开启jwt插件 3 配置jwt插件 algorithm HS2