第三方应用接入
从2.4.0版本开始,集成KOCA的第三方应用授权功能,通过配置相关三方应用和接口,可以让三方应用通过安全码和应用秘钥调取本系统的接口获取相关信息(部分需要通过请求头获取用户id的接口不适用该方法授权给三方)。
1 基础配置
1.1 数据库配置
- module-sysytem模块的jdbc.yml的url后增加
&allowMultiQueries=true
- 新增相关数据表:koca_mngif_black_white_list、koca_mngif_api_interface、koca_mngif_api_auth、koca_mngif_access_app、seqapi
1.2 gateway配置
- auth.yml(remoteUri根据第三方数据来源填写,来自哪个模块就写哪个模块,一般情况下来自本模块)
koca:
security:
# 三方应用授权
access-app:
enabled: true
ignoredHeader: true
enabledIpCheck: true
app-auth:
source: remote
remoteUri: http://module-system
- gateway.yml
gate:
request:
addHeader: true
- logging.yml(此7011端口对应3.1和3.2的请求端口)
management:
server:
port: 7011
endpoints:
web:
base-path: /management
exposure:
include: "*" #["configprops", "env", "health", "info", "jhimetrics", "logfile", "loggers", "threaddump"]
endpoint:
health:
show-details: always #when_authorized
metrics:
enable:
http: true
jvm: true
logback: true
process: true
system: true
distribution:
percentiles-histogram:
all: true
percentiles:
all: 0, 0.5, 0.75, 0.95, 0.99, 1.0
- pom.xml
<dependency>
<groupId>com.szkingdom.koca.boot</groupId>
<artifactId>koca-boot-starter-auth-server</artifactId>
</dependency>
1.3 module-system配置
- pom.xml
<dependency>
<groupId>com.szkingdom.koca.admin</groupId>
<artifactId>koca-admin-app-access</artifactId>
</dependency>
- 新增auth.yml文件
auth:
security:
enabled: false #gate开启认证,该模块改为false
access-app:
enabled: true
ignoredHeader: true
2 操作流程
2.1 添加应用
参数名 | 解释说明 |
---|---|
appKey | appKey |
应用状态 | 该应用是否可授权,关闭后所有三方接口都访问不了 |
限制方式 | 白名单中比对后可将请求接入,黑名单拒绝进入 |
安全码 | 自动生成无需修改 |
2.2 添加白名单/黑名单
根据业务需要配置黑白名单的第三方应用的ip地址
2.2 添加接口
参数名 | 解释说明 |
---|---|
接口代码 | 接口的code,主键,类似于id |
接口URI | 访问的api路径,格式形如:app/list,operlog/list,无需模块名前缀 |
接口类型 | GET、POST、PUT、DELETE |
2.3 接口授权
选择刚刚新增的应用并点击应用授权
选择刚刚新增的接口/需要添加的接口并保存
3 本地验证
3.1 获取"_sign"
请求路径:
http://localhost:7011/management/accessAppSign
请求参数:(timestamp要在当前时间半小时内)
{
"appKey": "third_test",
"securityCode": "a426e4729e45450481940fa81d63e516",
"timestamp": "2022-11-25T10:50:00"
}
3.2 刷新数据
如若在页面上更新了数据,还需手动刷新网关的授权信息,显示success即为成功
请求路径:
http://localhost:7011/management/accessApp
3.3 请求授权接口
- 添加头信息(注意根据实际请求更改前缀“module-system”)
- 注意:127.0.0.1以及localhost访问不会校验ip黑白名单。本地测试使用ip+端口访问测试
- 请求数据
- 如若出现如下提示:
则在nginx里的nginx.conf配置文件中的http部分中添加如下配置(默认 underscores_in_headers 为off):
underscores_in_headers on;
- 如若出现如下提示,则修改kems-module-system的application.yml中的request.credential.enable为false
{
"code": "100405",
"msg": "会话或认证过期,请重新登录",
"detail": "获取第三方授权信息失败,appkey=***",
"head": {
"level": "2"
},
"body": {}
}