测试APISIX的JWT-AUTH扩展
一、前言
1、要入门并使用该扩展插件,需要首先去了解JSON WEB TOKEN(JTW),其一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息。
2、除了JWT之外,需要了解APISIX的Consumer模块的使用:
对于API网关通常可以用请求域名、客户端IP地址等字段识别到某类请求方,然后进行插件过滤并转发请求到指定上游,但以上描述在实际应用中可能深度不够。

如上图,APISIX,可以配置并知道API Consumer(消费方)具体是谁,这样就可以对不同API Consumer配置不同规则。
| 字段 | 必选 | 说明 |
|---|---|---|
| upstream | 是 | 消费方名称 |
| plugins | 否 | 该消费方对应的插件配置,它的优先级是最高的:Consumer > Route > Service |
在APISIX中,识别Consumer的过程如下图

①、授权认证:比如key-auth、JWT等。
②、获取consumer_id:通过授权认证后,即可自然获取到对应的 consumer_id,它是消费方的唯一识别标识。
③、获取consumer上绑定的plugins或者upstream信息:完成对不同配置进行不同的效果。
我的简单理解:访问同一个API的不同消费方,在APISIX里可以通过consumer模块给他进行消费方个人订制的插件或者个人订制的upstream配置。
二、JWT-AUTH插件测试步骤
1、创建一个consumer对象,并设置插件jwt-auth的值,可用以下命令:
curl http://127.0.0.1:9080/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "username": "testjwt", "plugins": { "jwt-auth": { "key": "user-key", "secret": "my-secret-key" } } }'
或者在可视化控制台中新增:

2、创建一个Route对象,并开启jwt-auth插件。可用以下命令:
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "methods": ["GET"], "uri": "/wrrBlog/*", "plugins": { "jwt-auth": {} }, "upstream": { "type": "roundrobin", "nodes": { "127.0.0.1:8088": 1 } } }'
也可使用可视化控制台创建:

其中,127.0.0.1:8088是自定义的微服务或一个API接口的IP+端口,/wrrBlog/* 代表API接口为/wrrBlog为前缀的API接口
3、使用如下命令获取token
curl http://127.0.0.1:9080/apisix/plugin/jwt/sign?key=user-key -i
或直接用浏览器访问

4、尝试不带token访问界面,发现提示缺乏jwt。

5、分别尝试各种方式将token携带入请求体,传入后台尝试通过验证
如 直接携带于参数中:

如 置于cookie中:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-khaTnaV1-1610676851726)(en-resource://database/555:1)]](https://i-blog.csdnimg.cn/blog_migrate/687e3ed4e61e180243de74a52385b1d7.png#pic_center)
本文详细介绍了如何在APISIX中使用JWT-AUTH插件进行消费者认证,通过创建consumer并配置插件,以及在route中启用JWT验证,实现针对不同消费方的定制化处理。步骤包括创建consumer、设置JWT插件、配置Route并获取token进行验证。
1970

被折叠的 条评论
为什么被折叠?



