MicroZero中的HttpGateway详解

在我们的设计中,HttpGateway(网关)实现如下功能:

  1. Http请求互转
    接收来自Internet的Http请求,经过转换后向内部ZeroNet发起请求,请求完成后,将来自ZeroNet的请求结果(ApiResult)以JSON格式返回
  2. 安全检查
    Internet是一个不安全的环境,仅靠防火墙并不能完全抵挡恶意请求,所以我们还对Http请求进行了一定的安全检查,最大程度的保护企业资源。
  3. 服务鉴权
  • Api返问范围检查,防止非公开Api被访问
  • Auth2.0令牌解析
    通过访问Auth对应的API解析用户信息,解析成功后将GlobalContext的Ueser对象赋值为此用户信息,通过ZeroNet中预定义的Context帧实现跨机器域传递,Api站点接收到会自动还原成GlobalContext。

GlobalContext通过RequestInfo属性传递请求的原始信息,包括:UserAgent、请求者IP及端口。

  1. 熔断与限流
  • 请求数超过限值时返回503错误,从而保证ZeroNet不因为算力不足而瘫痪。
  • 对于已知的不安全请求,直接拒绝访问,最大程度保护ZeroNet内部资源不受损失。
Http请求处理流程

在这里插入图片描述#### HttpGateway的配置
route_config.json

{
  /*系统设置*/
  "sysConfig": {
    /*是否开启ZeroNet网络*/
    "FireZero": true,
    /*是否开启返回值检查*/
    "CheckResult": false,
    /*是否开启API预检:即检查API是否存在、是否需要令牌、是否可公开访问*/
    "CheckApiItem": false,
    /*HTTP调用超时*/
    "HttpTimeOut": 30000,
    /*短信超时报警的时长(毫秒)*/
    "WaringTime": 2000,
    /*是否包含顶级目录*/
    "IsAppFolder": false,
    /*启用管理命令*/
    "EnableInnerCommand": false,
    /*启用内容页*/
    "EnableContext": false,
    /*内容页地址*/
    "ContextAddr": ""
  },
  /*安全配置*/
  "security": {
    /*是否校验Auth*/
    "fireBearer": true,
    /*Auth站点及API名称*/
    "authStation": "Authority",
    "didApi": "v1/verify/did",
    "atApi": "v1/verify/at",
    /*黑洞地址*/
    "blockAddress": "https://code.jquery.com/jquery-3.3.1.js",
    /*拒绝使用的令牌,Key Value一样*/
    "denyTokens": [],
    /*
	Http头拒绝的规则:其中DenyType枚举如下    
        None,// 不阻止
        Hase,// 有此内容
        NonHase,// 没有此内容
        Count,// 达到数组数量
        Equals,// 内容等于
        Like,// 内容包含
        Regex// 正则匹配
	*/
    "denyHttpHeaders": [
      {
        "Head": "X-Forwarded-For", /*Http头名称*/
        "Value": "3", /*比对内容*/
        "DenyType": "Count" /*比对类型*/
      }
    ]
  }
  ]
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值