配置JWT认证鉴权

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

前提条件

  • 了解JWT基本标准。

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

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

背景信息

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

基于Token的认证

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

支持的接入集成方式

image

创建鉴权

  1. 登录AI网关控制台

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

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

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

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

    配置项

    描述

    开启

    是否开启AI 网关鉴权。

    鉴权名称

    自定义AI 网关鉴权的名称。

    鉴权类型

    默认支持JWT认证方式。

    Issuer

    设置JWT ClaimsIssuer,即签发人。

    Sub

    设置JWT claimssub(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。