WSO2-OpenAPI使用指引(鉴权、限流、策略、API与API产品发布和订阅)
目录
OpenApi技术分析
1. WSO2的四个端
后台管理:https://wso2t.ichub.com/admin
开发者门户: https://wso2t.ichub.com/devportal
发布端:https://wso2t.ichub.com/publisher
用户管理端:https://wso2t.ichub.com/carbon
测试环境: admin/admin
2. OAuth2.0概念
OAuth2.0是一个授权框架规范 —— 定义了第三方应用如何获取服务器授权并访问。框架中定义了客户端类型、4种授权方式、accessToken和refreshToken的描述以及TLS和HTTP重定向的应用等。
客户端Client
任何想要访问受保护资源并且要进行鉴权请求发送的应用就是一个客户端,可以是在浏览器、服务器、桌面应用或者其他设备上运行的应用。
任何client在进行鉴权之前都必须进行注册,包括指定client类型和重定向地址。每个注册的client都会在服务器获得唯一的客户身份(通常标注为client_id),而客户身份会影响到鉴权的方式,比如授信客户就可以通过password / implicit方式进行鉴权,当然,必须基于TLS。
4种鉴权方式
授权码 —— 这是一种基于重定向的授权方式。流程复杂,安全性高,适合开放型客户的鉴权
1. 使用client_id + redirectionURI + state + 其他属性来请求验证。查看请求参数规范
2. 服务器需要验证除state外的其他参数是否与client注册时一致,成功后强制跳转到redirectionURI指定的地址并会在查询参数中附带授权码以及之前传递的state
3. 使用第二步拿到的授权码 + client_id + redirectionURI 请求访问码
4. 服务器验证授权码与client_id匹配,并且redirectionURI与第一步请求中的值相符后返回访问码、刷新码过期时间等的JSON对象。查看响应值规范
隐藏授权码 —— 基本与授权码模式相同,但少了一步获取授权码,可以直接获取访问码。
1. 使用client_id + redirectionURI + state + 其他属性来请求验证。查看请求参数规范
2. 服务器验证通过后强制跳转到redirectionURI指定的地址并会在url片段标识中附带访问码以及之前传递的state。因为访问码会暴露给用户,所以返回结果中不包含刷新码。查看响应值规范
用户名/密码授权 —— 该授权方式务必仅用于信任应用,比如自建项目中的web/app。常用于把基于传统的cookie鉴权方式变更为访问码鉴权方式。
1. 使用用户名、密码来请求访问码。查看请求参数规范
2. 服务器验证成功返回访问码、刷新码、过期时间等的JSON对象。查看响应值规范
客户凭证授权 —— 该授权方式仅需告诉服务器自己是哪个client即可,无需鉴权。适合用在可信范围内的伙伴应用,比如同一个网关内的非自建项目的数据访问
3. WSO2对接微信OAuth2
WSO2是一个开源的中间件平台,它提供了身份认证和访问管理(IAM)功能,支持多种身份验证和授权协议,包括OAuth 2.0。理论上,WSO2可以对接微信公众号的OAuth 2.0鉴权,但这需要开发者根据微信公众号的OAuth 2.0实现细节,编写相应的代码来实现集成。
微信公众号的OAuth 2.0鉴权流程通常包括以下几个步骤:
1. **用户同意授权,获取code**:用户访问一个特定URL,同意授权后,微信会重定向到指定的回调URL,并附带一个授权码(code)。
2. **通过code换取网页授权access_token**:后端服务使用上一步获得的code,通过HTTP请求向微信服务器请求access_token。
3. **刷新access_token(如果需要)**:access_token有有效期限制,可能需要刷新。
4. **拉取用户信息**:使用access_token和用户的openid来获取用户信息。
WSO2作为一个IAM解决方案,可以通过扩展和配置来实现与微信公众号OAuth 2.0的对接。这通常涉及到:
- **创建服务提供者**:在WSO2 IAM中配置微信公众号作为服务提供者,包括设置授权和令牌端点URL、客户端ID和密钥等。
- **配置OAuth 2.0客户端**:在WSO2中创建一个OAuth 2.0客户端,配置其重定向URI以接收微信的code。
- **实现code交换逻辑**:编写逻辑来处理从微信接收的code,并向微信服务器交换access_token。
- **获取用户信息**:使用access_token从微信服务器获取用户信息。
WSO2提供了灵活的认证和授权框架,允许开发者通过编写自定义代码和配置来实现特定的对接需求。因此,虽然WSO2可能没有“自动”对接微信公众号OAuth 2.0的开箱即用功能,但是通过适当的开发工作,是可以实现集成的。如果WSO2社区或者其他用户已经实现了这样的集成,也可以通过查找社区提供的解决方案或者第三方插件来加速开发过程。
4. 限流功能
① 按应用限流
② 按订阅者限流
③ 按API限流
5. 策略:
① 策略列表
增加头、禁止分包传输、改变http method 、增加请求参数
② 全局策略:
全局生效,只配置一次 ; 请求、响应、出错:
③ API策略:
对每个api增加策略
6. API发布
① 创建 api
② 配置API
协议:http/https
安全: oauth2/basic/apikey
跨域:设置
schema校验:是否json格式
③ 发布api
7. API产品发布:
① 将多个API打包成产品
② 选择API
③ 创建产品
④ 配置产品
⑤ 发布产品
8. 订阅API
开发者门户实施订阅:https://wso2t.ichub.com/devportal
① 创建应用
② 配置应用 key
③ 订阅API
在应用中增加api
- 成交数 --
- 成交额 --
- 应答率