微服务网关基于标准的JWT实现了对第三方应用授信校验,只有授信的第三方应用才可以访问到内部服务。

前提条件

背景信息

当第三方应用需要访问微服务网关后端服务时,必须设置鉴权策略,以防止存在恶意请求,对后端服务造成无法预估的影响。

  • 未设置鉴权策略前,在浏览器地址栏输入http://微服务网关绑定的EIP:80/demo/user/test,按enter键,界面返回Hello from [8080]!demo返回示例值
  • 设置鉴权策略后,在浏览器地址栏输入http://微服务网关绑定的EIP:80/demo/user/test,按enter键,界面提示阻止JWT身份验证。

新建凭证

  1. 登录微服务网关控制台
  2. 网关管理页面顶部菜单栏选择地域
  3. 在左侧导航栏选择网关管理
  4. 网关管理页面单击网关名称。
  5. 网关详情页面左侧导航栏单击凭证管理
  6. 凭证管理页面右上角单击新增凭证
  7. 新建凭证对话框设置凭证参数,然后单击确认
    新建凭证

    凭证参数说明:

    参数 说明
    凭证名称 仅限字母、数字和下划线(_),最长16个字符,必须以字母开头。
    凭证类型 凭证类型,目前仅支持鉴权JWT。
    有效期至 凭证的有效期。支持短期和长期两种。
    • 短期:一年内的任意日期。
    • 长期:固定为3年时间。
    备注 凭证的备注信息。
  8. 凭证管理页面单击目标凭证名称,查看凭证详情。凭证详情页面
    • Client Token:颁发给第三方应用的Token。
    • Server Key:用于配置鉴权策略的密钥,在配置鉴权策略的“provider/ticketName/localJwks”需要设置为Server Key。

设置鉴权策略

  1. 登录微服务网关控制台
  2. 在顶部菜单栏选择地域
  3. 在左侧导航栏选择网关管理
  4. 网关管理页面单击网关名称。
  5. 网关详情页面左侧导航栏单击API管理
  6. API管理页面单击API名称。
  7. API详情页面的策略区域添加策略,然后单击保存
    添加策略包含创建策略和选择已有策略两种方式。
    • 创建策略
      1. API管理页面请求处理区域单击创建策略
      2. 创建策略页面设置策略名称策略类型策略配置,然后单击确认创建鉴权策略

        创建策略参数说明:

        参数 描述
        策略名称 自定义设置策略名称。
        策略别名 自定义设置易于辨识策略的别名信息。
        策略类型 选择鉴权-JWT
        启用状态 策略开关,默认开启。
        策略配置

        providers:鉴权规则合集。

        rules:鉴权匹配合集。

        providers:  
            ticketName:  // 表示一个鉴权实体,名称唯一,与rules/requires/providerName对应。
              issuer: http://alibabacloud.com  // JWT Client Token和Server Key的发布方,默认为alibabacloud.com。
              localJwks: PUBLIC-KEY //Server Key,即是凭证详情页面的Server Key,可复制粘贴到此处。
              fromHeaders:  // 获取Client Token的Http Header属性,列表类型,如果为空,默认以Authorization:Bearer XXX形式获取。
                - jwt-assertion
                - jwt1-assertion
              fromParams:  // 获取Client Token的Http Query Param属性,列表类型,如果为空,默认从access_token获取。
                - jwt_token
        rules: 
            - match:  // 表示一个匹配规则。
                  path: /greeting  // 具体匹配的路径,与Zuul中的path属性含义和判断方式相同。
              requires:  // 表示匹配之后需要哪些鉴权实体实施鉴权。
                  providerName: ticket_name  // 鉴权实体的名字,与providers中的唯一名称对应,如果providers中不存在该名称的鉴权实体,直接判定鉴权失败,请求被block。
        									
    • 选择已有策略:单击+选择已有策略,在已有策略对话框勾选策略,单击确认
      说明 添加已有策略后,默认关闭启用状态开关。如需打开,单击策略名称,在编辑策略对话框中打开启用状态开关。

    您还可以拖动策略名称左侧的移动按钮 按钮以便调整策略的优先级。

  8. API管理页面底部单击保存并发布
    系统弹出发布详情对话框,请单击关闭

结果验证

  1. 在浏览器地址栏输入http://微服务网关绑定的EIP:80/demo/user/test,按enter键,界面提示阻止JWT身份验证。阻止JWT身份验证
    微服务绑定的EIP,即是网关入口SLB绑定的EIP。绑定EIP的详细操作请参见绑定EIP
  2. 在访问路径后增加?jwt_token=Client Token的值信息,按enter键,界面返回Hello from [8080]!demo返回示例值
    Client Token的值从微服务网关凭证详情页面获取。