JWT(JSON Web Token)是一种常用的身份认证和鉴权机制。JWT中会携带一些用户信息和一个存储加密后信息的字段。将加密后的信息字段进行解密,与原始用户信息字段进行比较,可以验证该用户的信息是否有效,从而完成身份认证。本文介绍如何在ASM网关中配置JWT认证。
前提条件
操作步骤
- 登录ASM控制台,在左侧导航栏,选择 。
- 在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
- 在入口网关页面,单击目标网关名称。
- 在网关概览页面左侧导航栏,选择 。
- 在JWT认证配置配置向导,打开启用网关JWT认证开关,进行相关配置,然后单击下一步。
配置项 说明 Issuer JWT的颁发者。本示例配置为testing@secure.istio.io。 JWKS来源 选择jwks。 Key 配置示例: { "keys":[ {"e":"AQAB","kid":"DHFbpoIUqrY8t2zpA2qXfCmr5VO5ZEr4RzHU_-envvQ","kty":"RSA","n":"xAE7eB6qugXyCAG3yhh7pkDkT65pHymX-P7KfIupjf59vsdo91bSP9C8H07pSAGQO1MV_xFj9VswgsCg4R6otmg5PV2He95lZdHtOcU5DXIg_pbhLdKXbi66GlVeK6ABZOUW3WYtnNHD-91gVuoeJT_DwtGGcp4ignkgXfkiEm4sw-4sfb4qdt5oLbyVpmW6x9cfa7vs2WTfURiCrBoUqgBo_-4WTiULmmHSGZHOjzwa8WtrtOQGsAFjIbno85jp6MnGGGZPYZbDAa_b3y5u-YpW7ypZrvD8BgtKVjgtQgZhLAGezMt0ua3DRrWnKqTZ0BJ_EyxOGuHJrLsn00fnMQ"}]}
高级选项 单击高级选项,在JWT规则高级选项对话框,您可以按需自定义Token的位置、是否透传JWT、是否将JWT中的Payload信息放在请求Header中透传等。配置完成后,单击确定。 - 在匹配规则配置向导,进行相关配置,然后单击提交。
配置项 说明 匹配模式 本文选择选中请求必须经过认证。取值说明如下: - 选中请求必须经过认证:选中的请求必须进行JWT认证。
- 选中请求可跳过认证:选中的请求可以不进行JWT认证。
添加配置规则 打开HTTP路径(Path)开关,配置为/productpage。该配置表示路径为/productpage的请求只有通过JWT认证,才能进行访问;其他请求(配置规则之外的路径)可以不执行JWT认证。 说明 当其他请求进行访问时,不携带JWT的请求可以访问成功,携带错误的JWT的请求会访问失败。创建成功后,在完成配置向导会显示“网关JWT认证创建成功”和服务网格原生的安全资源。您可以单击查看YAML,查看资源的具体配置。 - 验证JWT认证配置是否生效。