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

发布时间:2021-11-15 10:59:39 作者:iii
来源:亿速云 阅读:177

这篇文章主要介绍“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微服务网关中如何实现请求统一验证

数据库配置

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
}

JWT相关访问接口

请求Token配置

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

应用示例

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

    public class ApiController : Controller
    {
        // GET: /<controller>/
        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/,在网关配置相关路由

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

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

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

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

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

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

推荐阅读:
  1. SpringCloud微服务(07):Zipkin组件,实现请求链路追踪
  2. SpringCloud微服务(06):Config组件,实现配置统一管理

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:FileZilla如何轻松设置

下一篇:注解@RequestParam加与不加的区别是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》