开源网关Apache APISIX启用JWT身份验证

2024-06-07 03:12

本文主要是介绍开源网关Apache APISIX启用JWT身份验证,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

说明:

  • 本文APISIX的配置参考我之前写的《Ubuntu部署Apache APISIX》

创建最小API

首先,确保你已经安装了.NET 6 SDK。创建文件夹“MinimalApiDemo”,VS Code打开文件夹,打开终端

dotnet new web -o MinimalApiDemo
cd MinimalApiDemo

修改Program.cs

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();builder.WebHost.UseUrls("http://0.0.0.0:5001");app.MapGet("/", () => "Hello, World!");app.MapGet("/protect/{name}", (string name) => $"Hello, {name}!");app.Run();

启动项目

dotnet run

浏览器打开“http://192.168.8.220:5001/protect/tom”,显示结果

Hello, tom!

创建消费者

创建两个消费者,管理员admin和用户user

{"username": "admin_role","plugins": {"jwt-auth": {"exp": 86400,"key": "admin","secret": "admin1234567890"}}
}
{"username": "user_role","plugins": {"jwt-auth": {"exp": 86400,"key": "user","secret": "user1234567890"}}
}

在这里插入图片描述

在这里插入图片描述

创建上游

在这里插入图片描述

创建公共API端点

为JWT身份验证创建公共API端点/apisix/plugin/jwt/sign

在这里插入图片描述

{"uri": "/gen_token","name": "jwttoken","plugins": {"public-api": {"uri": "/apisix/plugin/jwt/sign"}},"status": 1
}

浏览器或者Postman等工具,请求如下链接,注意这里的key为admin

http://192.168.8.249:9080/gen_token?key=admin

在这里插入图片描述

得到admin的token

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJrZXkiOiJhZG1pbiIsImV4cCI6MTcxNzc2ODcwNH0.YeuyvRJmRHwajqmFm6G8ffYtguIW4PFoZ7LY3iDO8Kg

同理,接下来使用key为user

http://192.168.8.249:9080/gen_token?key=user

得到user的token

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1c2VyIiwiZXhwIjoxNzE3NzY4ODc0fQ.ZSpDGNmBHVjoKtLxxic6S5C4auNJx1FlAJThvJReq6k

创建测试路由

测试之前的最小API接口

http://192.168.8.220:5001/protect/tom

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

【更多】【查看】的内容如下

{"uri": "/protect/*","name": "protect","methods": ["GET"],"plugins": {"consumer-restriction": {"whitelist": ["admin_role"]},"jwt-auth": {}},"upstream_id": "516993931985027773","status": 1
}

测试JWT认证

使用Postman工具,访问如下接口

http://192.168.8.249:9080/protect/tom

在这里插入图片描述

Postman提示

{"message":"Missing JWT token in request"}

Headers中Key填写“Authorization”,Value填写“Bearer [token]”(注意Bearer和[token]之间有一个空格)

使用user的token

Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1c2VyIiwiZXhwIjoxNzE3NzY4ODc0fQ.ZSpDGNmBHVjoKtLxxic6S5C4auNJx1FlAJThvJReq6k

Postman提示如下。网关阻止了user用户请求

{"message":"The consumer_name is forbidden."}

在这里插入图片描述

接下来使用admin的token

Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJrZXkiOiJhZG1pbiIsImV4cCI6MTcxNzc2ODcwNH0.YeuyvRJmRHwajqmFm6G8ffYtguIW4PFoZ7LY3iDO8Kg

在这里插入图片描述

admin用户顺序访问受保护的接口

参考

  • 公共 API | Apache APISIX®——云原生 API 网关 — public-api | Apache APISIX® – Cloud-Native API Gateway
  • 什么是基于JWT的token认证,如何配置token认证_API 网关(API Gateway)-阿里云帮助中心 (aliyun.com)
  • How To Use JWT Authentication With Web API (c-sharpcorner.com)
  • jwt-auth | Apache APISIX® – Cloud-Native API Gateway

这篇关于开源网关Apache APISIX启用JWT身份验证的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1038013

相关文章

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

Apache Ignite缓存基本操作实例详解

《ApacheIgnite缓存基本操作实例详解》文章介绍了ApacheIgnite中IgniteCache的基本操作,涵盖缓存获取、动态创建、销毁、原子及条件更新、异步执行,强调线程池注意事项,避免... 目录一、获取缓存实例(Getting an Instance of a Cache)示例代码:二、动态

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

SpringBoot整合Apache Flink的详细指南

《SpringBoot整合ApacheFlink的详细指南》这篇文章主要为大家详细介绍了SpringBoot整合ApacheFlink的详细过程,涵盖环境准备,依赖配置,代码实现及运行步骤,感兴趣的... 目录1. 背景与目标2. 环境准备2.1 开发工具2.2 技术版本3. 创建 Spring Boot

Linux中修改Apache HTTP Server(httpd)默认端口的完整指南

《Linux中修改ApacheHTTPServer(httpd)默认端口的完整指南》ApacheHTTPServer(简称httpd)是Linux系统中最常用的Web服务器之一,本文将详细介绍如何... 目录一、修改 httpd 默认端口的步骤1. 查找 httpd 配置文件路径2. 编辑配置文件3. 保存

Spring Boot 整合 Apache Flink 的详细过程

《SpringBoot整合ApacheFlink的详细过程》ApacheFlink是一个高性能的分布式流处理框架,而SpringBoot提供了快速构建企业级应用的能力,下面给大家介绍Spri... 目录Spring Boot 整合 Apache Flink 教程一、背景与目标二、环境准备三、创建项目 & 添

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

apache的commons-pool2原理与使用实践记录

《apache的commons-pool2原理与使用实践记录》ApacheCommonsPool2是一个高效的对象池化框架,通过复用昂贵资源(如数据库连接、线程、网络连接)优化系统性能,这篇文章主... 目录一、核心原理与组件二、使用步骤详解(以数据库连接池为例)三、高级配置与优化四、典型应用场景五、注意事

Go语言中使用JWT进行身份验证的几种方式

《Go语言中使用JWT进行身份验证的几种方式》本文主要介绍了Go语言中使用JWT进行身份验证的几种方式,包括dgrijalva/jwt-go、golang-jwt/jwt、lestrrat-go/jw... 目录简介1. github.com/dgrijalva/jwt-go安装:使用示例:解释:2. gi

Python FastAPI实现JWT校验的完整指南

《PythonFastAPI实现JWT校验的完整指南》在现代Web开发中,构建安全的API接口是开发者必须面对的核心挑战之一,本文将深入探讨如何基于FastAPI实现JWT(JSONWebToken... 目录一、JWT认证的核心原理二、项目初始化与环境配置三、安全密码处理机制四、JWT令牌的生成与验证五、