千家信息网

Bumblebee微服务网关中如何实现请求统一验证

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,这篇文章主要介绍"Bumblebee微服务网关中如何实现请求统一验证",在日常操作中,相信很多人在Bumblebee微服务网关中如何实现请求统一验证问题上存在疑惑,小编查阅了各式资料,整理出简单好用的
千家信息网最后更新 2025年02月04日Bumblebee微服务网关中如何实现请求统一验证

这篇文章主要介绍"Bumblebee微服务网关中如何实现请求统一验证",在日常操作中,相信很多人在Bumblebee微服务网关中如何实现请求统一验证问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Bumblebee微服务网关中如何实现请求统一验证"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

对于微服务网关来说,统一请求验证是一个比较重要和常用的功能,通过网关验证后台服务就无须关注请求验证;对于多语言平台的服务而言制定验证方式和变更验证配置都是一件比较繁琐和工作量大的事情。Bumblebee提供JWT验证插件,只需要简单配置即可让网关实现请求统一验证。

引用插件

Bumblebee中使用JWT需要引用两个插件,分别是Bumblebee.ConfigurationBumblebee.Jwt。加载启动后就可以通过管理工具进行插件配置.

            g = new Gateway();            g.HttpOptions(                o =>                {                    o.Port = 80;                    o.LogToConsole = true;                    o.LogLevel = BeetleX.EventArgs.LogType.Error;                });            g.Open();            g.LoadPlugin(                typeof(Bumblebee.Configuration.Management).Assembly,                typeof(Bumblebee.Jwt.JwtPlugin).Assembly               );

如果不想自己编写代码可以下载编译的运行包 Bumblebee1.0.6这个版本已经加入了JWT

插件管理

运行程序后进行配置管理工具的插件管理页面,可以看到JWT插件,默认是未启用。

数据库配置

Bumblebee.Jwt的使用需要用到数据库,主要用于接管登陆并生成Token用。插件默认支持三种数据库,分别是:mssql,mysqlpgsql.相关登陆信息表必须包括以下三个字段:_name(用户名),_role(角色)和_password(密码).mysql脚本如下:

CREATE TABLE `_users` (  `_name` varchar(50) NOT NULL,  `_password` varchar(45) DEFAULT NULL,  `_role` varchar(45) DEFAULT NULL,  PRIMARY KEY (`_name`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

JWT配置

插件使用需要进行配置,可以通过点击插件进入相关配置页面。

示例配置如下:

{    "Key": "ExxUqmeDKnAk1eMHV02ICJkwp82RsleM887yRnQS3Gg8OHCxWsLPlzCEAJActCo6y6Mae26JeGDFx7aYkeP7Efl6yh/d1q3XYRCdDLLGbz+kt3vR92H6s78P7JILNgZMiO6XoekKXfT2Qxle7Gyu/1d39NloKhqXgBdgzeobyyo=",    "MD5": false,    "DBType": "MYSQL",    "ConnectionString": "Server=192.168.2.19;Database=world;Uid=root;Pwd=123456;",    "VerifyPaths": [        "^/api.*"    ],    "Table": "_users",    "TokenTimeOut": 200,    "RemoveHeaders": [        "Cookie"    ],    "LoginMaxRps": 200}
  • Key JWT处理密钥

  • MD5 是否要把密码转MD5再查询

  • DBType 数据类型,分别:MSSQL,MYSQL,PGSQL

  • ConnectionString 数据库连接字符串

  • VerifyPaths 需要验证的路径列表,正则表达式。

  • Table 用户表名称

  • TokenTimeOut 凭证超时时间,单位是分钟

  • RemoveHeaders转发时移走头列表

  • LoginMaxRps登陆限制,每秒允许并发数,如果设置成零则不限制

JWT相关访问接口

  • http://host/__system/jwt/login?name=henry&pwd=123456&cookie=true登陆获取Token访问Url,cookie参数表示返回Token并写入Cookie

  • http://host/__system/jwt/singout清除Cookie相应的Token信息.

请求Token配置

如果在调用登陆的时候写入了Cookie那在请求过程中不再需要配置相关Token信息.在其他调用方式下需要把返回的Token配置到请求头的Authorization上。

应用示例

直接下来用aspcore编写一个webapi服务然后用Bumblebee进行一个代理并设置安全控制访问。

    public class ApiController : Controller    {        // GET: //        public IActionResult Index()        {            return new ContentResult { Content = $"{DateTime.Now}|name:{Request.Headers["jwt_user"]};role:{Request.Headers["jwt_role"]}" };        }        public IActionResult Hello(string name)        {            return new ContentResult { Content = $"hello {name} {DateTime.Now}|name:{Request.Headers["jwt_user"]};role:{Request.Headers["jwt_role"]}" };        }    }

服务启动的地址是http://localhost:58387/,在网关配置相关路由

JWT验证关闭后可以正常访问服务由于没有经过网关的验证,所以jwt_userjwt_role信息为空。如果开启JWT验证又会怎样呢?

由于请求没有凭证信息,所以被网关拦截并返回了相应的错误。接下来先访问一下登陆接口并获取凭证http://localhost/__system/jwt/login?name=henry&pwd=123456&cookie=true,当凭证获取后就可以访问服务,并在服务中可以正常获取jwt_userjwt_role信息。

到此,关于"Bumblebee微服务网关中如何实现请求统一验证"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

验证 配置 服务 插件 网关 统一 信息 登陆 数据 凭证 数据库 学习 管理 接下来 可以通过 密码 工具 接口 方式 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 萌新妹子玩我的世界服务器 一汽软件开发面经 聊天软件开发多少钱 网络安全整体技术 王牌战争主播开的服务器在哪玩 软件咨询服务费与软件开发费 重庆安卓软件开发公司 濮阳软件开发大概费用 网络安全知识培训活动纪实 福州瀚宇软件开发有限公司 瑞银集团软件开发怎么样 为什么用服务器做家用机 辽宁工业大学网络安全 服务器故障检测报告 军事理论的网络安全生物安全 百思易智能服务器不在线 软件开发项目过程控制程序 网络安全鉴定 山东省公安厅 网络安全 app显示请求被服务器拒绝 临沂君辉网络技术有限公司 初级中学网络安全制度 智慧财务软件开发语言 软件开发的声明周期是什么 招聘 广西广电 网络技术员 音视频开发与嵌入式软件开发 人脸识别数据库怎么知道是谁的 嘉定区项目数据库服务成本 vf数据库工具栏 数据库 获取最近一条数据
0