• SpringCloud:搭建基于Gateway的微服务网关(一)


    1.需求

    最近在尝试着写一个开放平台,于是先搭建网关。

    作用:统一的请求入口,完成对请求的跟踪,限流(未做),鉴权,分发,封装响应

    2.工作原理

    2.1.请求

    在开放平台中申请对接口的使用,申请通过后会获得:AccessId/SecretKey

    API网关(服务访问的地址):127.0.0.1:7000

    请求path(业务接口的路径):/v1/article/.......

    将请求内容拼装为String(格式为统一格式)

    String stringToSign=
                 HTTP-Verb + " " +    //请求的方法
                 Content-MD5 + " "    //参数的MD5
                 Content-Type + " " +   //请求的参数类型
                 Timestamp + " " +    //请求的时间戳
                 Headers + Url_String    //请求头以及请求路径

    然后通过SecretKey对stringToSign进行加密,得到签名串:sign

    将AccessId:sign放入请求头,作为鉴权的依据 :  Authorization: gateway:{AccessId}:{Signature}

    发送请求

    2.2.网关拦截

    网关拦截该次请求,获取鉴权信息,得到AccessId依据加密后的签名串sign

    从request中获取请求信息(请求的方法,参数类型,时间戳,请求路径等。。),重新组装 stringToSign

    将AccessId,sign,stringToSign,url(请求的path),method(请求的方法)作为参数,调用鉴权接口进行校验

    2.3.鉴权

    通过AccessId,查数据库,获取SecretKey,以及用户信息等

    使用获取的SecretKey对stringToSign进行加密,得到签名串,对比原始签名串,是否匹配,匹配则请求合法

    其他校验:对用户信息进行校验,用户是否可用、对AccessId使用超期进行判断等

    通过url以及method获取API信息(主要是获取其服务名)

    返回鉴权结果

    2.4.服务分发

    对鉴权结果进行判断,合法则进行服务分发,将请求转发到对应服务上

    获取响应结果

    2.5.封装响应

    对响应结果进行处理,统一封装为网关返回数据

  • 相关阅读:
    用wamp配置的环境,想用CMD连接mysql怎么连
    Mysql删除表
    MySQL创建表
    Leetcode 130. Surrounded Regions
    Leetcode 111. Minimum Depth of Binary Tree
    Leetcode 110. Balanced Binary Tree
    Leetcode 98. Validate Binary Search Tree
    Leetcode 99. Recover Binary Search Tree
    Leetcode 108. Convert Sorted Array to Binary Search Tree
    Leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal
  • 原文地址:https://www.cnblogs.com/fdzang/p/11810705.html
Copyright © 2020-2023  润新知