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应用授权,为应用的扩展提供了便利。
支持的接入集成方式
创建鉴权
登录云原生API网关控制台。
在左侧导航栏,选择实例,并在顶部菜单栏选择地域。
在实例页面,单击目标网关实例名称。
在左侧导航栏,单击
。在全局认证鉴权页面左上角,单击创建鉴权,然后配置网关鉴权相关参数,最后单击确定。
配置项
描述
开启
是否开启云原生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。
查看鉴权详情
登录云原生API网关控制台。
在左侧导航栏,选择实例,并在顶部菜单栏选择地域。
在实例页面,单击目标网关实例名称。
在左侧导航栏,单击
。在全局认证鉴权页面,单击目标鉴权规则操作列的详情,可查看当前服务的基本信息和认证配置,也可查看并管理授权信息。
您可在授权信息区域,单击创建授权信息,在对话框中输入请求域名和请求Path,新增授权规则。
结果验证
返回全局认证鉴权页面查看鉴权信息,如果已包含新建的网关鉴权信息,则说明网关认证鉴权新建成功。
相关操作
您还可以执行以下其他操作,管理网关的认证鉴权:
开启鉴权:在全局认证鉴权页面,单击目标鉴权规则操作列的开启,使认证鉴权信息生效。
关闭鉴权:在全局认证鉴权页面,单击目标鉴权规则操作列的关闭,关闭网关认证鉴权信息。
编辑鉴权:在全局认证鉴权页面,单击目标鉴权规则操作列的编辑,可编辑网关认证鉴权信息。
删除鉴权:在全局认证鉴权页面,单击目标鉴权规则操作列的删除,可删除网关认证鉴权信息。
只有在认证鉴权信息关闭的状态下才可执行删除操作。
相关文档
如果您想了解其他认证鉴权机制,请参见网关认证鉴权概述。