配置JWT认证鉴权

JSON Web Token (JWT) 用于在客户端和服务端之间以JSON对象的形式安全地传输信息。该信息可以被验证和信任,因为JWT可以使用HMAC算法、RSA或ECDSA的公钥/私钥对其进行签名。JWT认证可以在网关中验证身份并控制授权访问。

前提条件

  • 了解JWT基本标准,请参见JWT简介

  • 了解云原生API网关支持的集成方式:自主颁发Token(安全性有保障)和网关配置公钥对请求验签。

  • 准备用于生成与验证Token的私钥与公钥。私钥用于授权服务的签发JWT;公钥配置在云原生API网关中,用于对请求验签。

背景信息

云原生API网关致力于为云上用户提供体系化的安全解决方案,其中JWT认证能力是在Json Web Token这种结构化令牌的基础上实现了一套基于用户体系对用户的API(服务)进行授权访问的机制,满足用户个性化安全设置的需求。

基于Token的认证

云原生API网关对外开放的API需要识别请求者的身份,并据此判断所请求的资源是否可以返回给请求者。Token就是一种用于身份验证的机制,基于这种机制,应用不需要在服务端保留用户的认证信息或者会话信息,可实现无状态、分布式的Web应用授权,为应用的扩展提供了便利。

支持的接入集成方式

支持接入的继承方式

创建鉴权

  1. 登录云原生API网关控制台

  2. 在左侧导航栏,选择实例,并在顶部菜单栏选择地域。

  3. 实例页面,单击目标网关实例名称。

  4. 在左侧导航栏,单击安全管理 > 全局认证鉴权

  5. 全局认证鉴权页面左上角,单击创建鉴权,然后配置网关鉴权相关参数,最后单击确定

    配置项

    描述

    开启

    是否开启云原生API网关鉴权。

    鉴权名称

    自定义云原生API网关鉴权的名称。

    鉴权类型

    默认支持JWT认证方式。

    Issuer

    设置JWT Claims的Issuer,即签发人。

    Sub

    设置JWT claims的sub(subject),即主体。

    JWKS

    设置JWT公钥,参考格式如下:

    {
        "keys":[
             {
            "e":"AQAB",
            "kid":"DHFbpoIUqrY8t2zpA2qXfCmr5VO5ZEr4RzHU_-envvQ",
            "kty":"RSA",
            "n":"xAE7eB6qugXyCAG3yhh7pkDkT65pHymX-
    P7KfIupjf59vsdo91bSP9C8H07pSAGQO1MV_xFj9VswgsCg4R6otmg5PV2
    He95lZdHtOcU5DXIg_pbhLdKXbi66Gl
    VeK6ABZOUW3WYtnNHD-91gVuoeJT_DwtGGcp4ignkgXfkiEm4sw-
    4sfb4qdt5oLbyVpmW6x9cfa7vs2WTfURiCrBoUqgBo_-4WTiULmmHSG
    ZHOjzwa8WtrtOQGsAFjIbno85jp6MnGGGZ
    PYZbDAa_b3y5u-YpW7ypZrvD8BgtKVjgtQgZhLAGezMt0ua3D
    RrWnKqTZ0BJ_EyxOGuHJrLsn00fnMQ"
              }
           ]
    }

    JWT Token配置

    设置JWT Token配置信息。

    • 类型:Token参数类型,默认Header。

    • Key:Token参数名称。

    • 前缀:Token参数名的前缀。设置需要校验的Token参数信息,默认是以Bearer为前缀放在Authorization Header中,例如:Authorization: Bearer token

    • 是否透传:选中Token参数透传,表示透传此Token参数到后端服务。

    授权

    授权模式支持白名单模式黑名单模式

    • 白名单模式:白名单中的hosts+paths不需要校验即可访问,其余都需要校验。

    • 黑名单模式:黑名单中的hosts+paths需要校验,其余可直接访问。

    单击+规则条件,设置请求域名和路径。

    • 请求域名:请求访问的域名,即hosts。

    • 请求path:请求访问的接口Path,即paths。

查看鉴权详情

  1. 登录云原生API网关控制台

  2. 在左侧导航栏,选择实例,并在顶部菜单栏选择地域。

  3. 实例页面,单击目标网关实例名称。

  4. 在左侧导航栏,单击安全管理 > 全局认证鉴权

  5. 全局认证鉴权页面,单击目标鉴权规则操作列的详情,可查看当前服务的基本信息认证配置,也可查看并管理授权信息

    jwt鉴权.png

    您可在授权信息区域,单击创建授权信息,在对话框中输入请求域名请求Path,新增授权规则。

结果验证

返回全局认证鉴权页面查看鉴权信息,如果已包含新建的网关鉴权信息,则说明网关认证鉴权新建成功。

相关操作

您还可以执行以下其他操作,管理网关的认证鉴权:

  • 开启鉴权:在全局认证鉴权页面,单击目标鉴权规则操作列的开启,使认证鉴权信息生效。

  • 关闭鉴权:在全局认证鉴权页面,单击目标鉴权规则操作列的关闭,关闭网关认证鉴权信息。

  • 编辑鉴权:在全局认证鉴权页面,单击目标鉴权规则操作列的编辑,可编辑网关认证鉴权信息。

  • 删除鉴权:在全局认证鉴权页面,单击目标鉴权规则操作列的删除,可删除网关认证鉴权信息。

说明

只有在认证鉴权信息关闭的状态下才可执行删除操作。

相关文档

如果您想了解其他认证鉴权机制,请参见网关认证鉴权概述