keycloak和阿里api网关集成,使用keycloak来作为阿里api网关的鉴权,jwt认证,oauth2.0保护api
1.创建分组和vpc授权
2.我们暴露一个token api
我们创建一个token api,认证方式选择无,
协议选择https,使用post,入参透传,地址输入/token
后端选择vpc授权,输入vpc名字,选择https,填入实际获取token地址
然后点保存,发布
这样我们的获取token的api地址就是
https://api.test.com/token
3.创建jwt认证插件
参考阿里官方文档JWT认证插件_插件使用_API 网关 - 阿里云 (aliyun.com)
这里需要注意的是要把claim 参数,需要定义client id,在第二个插件会用到,如果这里不指明,后面无法使用
这个插件的作用是验证token有效性
4 创建访问控制插件
参考访问控制插件_插件使用_API 网关 - 阿里云 (aliyun.com)
这个插件是用来验证client id,禁止没有授权的client id访问这个api
结合第一个插件,可以实现完整的token鉴权
5.创建api,绑定上面2个插件,并发布
假设api地址如下
https://api.test.com/invoice
6.获取token
curl https://api.test.com/token -X POST -d "client_id=xxxx&client_secret=xxxx&grant_type=client_credentials"
7.访问api
curl https://api.test.com/invoice -H "Authorization: Bearer <token>"
这个做法的缺点如下
因为验证方式选择无,所以无法确定app绑定,日志里无法找到是谁调用的