1. Kong OAuth 2.0 认证流程
1.1 相关角色
- 第三方应用: 实际想要访问API的应用,需要在Kong上注册,定义自己的访问口令和回调地址。
- 用户: 实际的第三方应用的使用者,和API访问权限的授权主体。
- 认证服务: 基于Kong搭建的认证服务,主要完成用户信息的部分,也就是登录和授权提示页面。它作为第三方应用和Kong之间的中间桥梁,因为Kong不直接接管这些信息。
- Kong: Api Gateway,完整API的认证和应用注册等,将请求向后端转发。
- API 提供者: 实际的API提供者,与Kong交互,外部无法直接访问。
1.2 认证流程
- Client为第三方应用,当它想访问某些需要用户授权的用户信息。
- Client将用户跳转至 Kong 上的认证服务来认证应用。
- 如果认证服务发现用户未登录,那么将会跳转至登录界面。
- 在登录界面完成登录,将会跳转至认证服务的授权页面,显示第三方应用想要获取的用户信息,用户可以确定是否允许第三方应用访问。
- 用户确认,认证服务提交信息至Kong上完成注册认证流程,Kong返回认证口令和跳转地址给认证服务。
- 认证服务将用户跳转至 第三方应用 在 Kong 上定义的回调地址,传递认证口令。
- 第三方应用从回调地址读取认证口令,请求Kong,获取实际的信息访问口令。
- 应用通过每次请求传递附加上访问口令来调用API。
2. Kong OAuth 2.0 问题,开发需求
一个完整的 OAuth 2.0 认证需要好几步,然而,Kong只完成最后几步,实际使用时需要开发上层的服务。
用户登录模块用户系统已经实现,登录方式为使用SDK传入Session ID获取用户登录信息,并不是很优雅。但是结合已有的登录服务,只需写一个登录界面,授权确认界面和与相关的交互服务。
3. 交互信息,协议,格式
3.1. 协议定义
(1)、新增 API
(2)、API 配置 oAuth 认证
(3)、添加开发者帐号
(4)、添加应用
(5)、模拟用户授权,获取回调码
(6)、获取两码,完成初次认证
(7)、API 请求
(8)、API Token 刷新