Description
[toc]
网关错误响应说明
499
无response body
- 原因: client 调用网关等待时间超过设置的timeout时间, 主动关闭连接, 此时网关会主动关闭后端接口的调用, 返回 499
- 处理: 被调用方提升接口性能, 或者调大client的超时时间(不建议过大)
504
{
"code_name": "REQUEST_BACKEND_TIMEOUT",
"data": null,
"code": 1650401,
"message": "Request backend service timeout [upstream_error=\"cannot read header from upstream\"]",
"result": false
}
- 原因: 网关资源会配置后端接口的timeout时间, 如果后端接口调用超时, 此时网关返回504
- 处理: 被调用方提升接口性能, 或者调大网关的超时时间(不建议过大)
后台错误响应说明
调用方式
认证
概念
- 应用认证: 蓝鲸PaaS平台会给每个应用分配一个唯一的
bk_app_code
, 以及对应的bk_app_secret
用于应用身份认证; 如果 API 启用了应用认证
, 那么调用方需要在请求头中提供合法的bk_app_code/bk_app_secret
, 网关会校验应用是否合法
- 用户认证: 蓝鲸统一登录, 会给每个登录的用户分配唯一的登录态
bk_token
(在cookie中), 用于用户身份认证; 如果 API 启用了 用户认证
, 那么调用方需要在请求头中提供合法的bk_token
, 网关会校验用户是否合法
- 校验访问权限: 某些API开启了
校验访问权限
, 则需要应用开发者到蓝鲸开发者中心申请 应用调用该API的权限, 审批通过后, 这个蓝鲸应用才能调用这个 API, 否则会返回无权限; 注意: 校验访问权限
要求该 API 开启 应用认证
, 网关需要拿应用认证
通过后的bk_app_code
进行权限校验
- access_token: 蓝鲸的 bkauth(旧版本的ssm) 等服务, 提供了
access_token
签发, 支持签发 应用身份access_token
(代表一个已认证应用) 以及 应用+用户身份 access_token
(代表一个已认证应用+已认证用户); 在无用户登录态/定时任务/脚本等调用网关 API 的场景, 可以使用access_token
替代 bk_app_code/bk_app_secret/bk_token
认证 Header 头
X-Bkapi-Authorization: {}
示例:
# 调用目标 API 开启: 应用认证+用户认证
X-Bkapi-Authorization: {"bk_app_code": "x", "bk_app_secret": "y", "bk_token": "z"}
# 调用目标 API 开启: 应用认证
X-Bkapi-Authorization: {"bk_app_code": "x", "bk_app_secret": "y"}
# 调用目标 API 开启: 用户认证
X-Bkapi-Authorization: {"bk_token": "z"}
# 使用access_token
X-Bkapi-Authorization: {"access_token": "z"}
curl
请求示例:
curl 'http://bkapi.example.com/prod/users/'
-H 'X-Bkapi-Authorization: {"bk_app_code": "x", "bk_app_secret": "y", "bk_token": "z"}'
认证报错信息
message: app code cannot be empty
status: 400
{
"code": 1640001,
"data": null,
"code_name": "INVALID_ARGS",
"message": "Parameters error [reason=\"app code cannot be empty\"]",
"result": false
}
- 原因: 没有提供
X-Bkapi-Authorization
头或者 X-Bkapi-Authorization
头中没有 bk_app_code
- 处理: 提供
X-Bkapi-Authorization
头并且里面包含 bk_app_code
message: please provide bk_app_secret or bk_signature to verify app
status: 400
{
"code": 1640001,
"data": null,
"code_name": "INVALID_ARGS",
"message": "Parameters error [reason=\"please provide bk_app_secret or bk_signature to verify app\"]",
"result": false
}
- 原因:
X-Bkapi-Authorization
头中没有 bk_app_secret
- 处理:
X-Bkapi-Authorization
头里面包含 bk_app_secret
message: bk_app_code or bk_app_secret is incorrect
status: 400
{
"code": 1640001,
"data": null,
"code_name": "INVALID_ARGS",
"message": "Parameters error [reason=\"bk_app_code or bk_app_secret is incorrect\"]",
"result": false
}
- 原因:
bk_app_code + bk_app_secret
校验失败, 不合法
- 处理: 确认发起请求头中
bk_app_code / bk_app_secret
合法, 与蓝鲸 PaaS 平台或运维签发给到的一致
message: user authentication failed, please provide a valid user identity, such as bk_username, bk_token, access_token
status: 400
{
"code": 1640001,
"data": null,
"code_name": "INVALID_ARGS",
"message": "Parameters error [reason=\"user authentication failed, please provide a valid user identity, such as bk_username, bk_token, access_token\"]",
"result": false
}
- 原因:
- 没有提供
X-Bkapi-Authorization
头
- 头里面没有包含
bk_token
or access_token
bk_token
不合法(会到蓝鲸统一登录校验, 校验失败, 可能是非法的bk_token
或已过期)
access_token
不合法(会到蓝鲸bkauth/ssm校验, 校验失败, 可能是非法的access_token
或已过期)
- 处理: 确认
bk_token/access_token
存在并且合法
message: user authentication failed, the user indicated by bk_username is not verified
status: 400
{
"code":1640001,
"data":null,
"code_name":"INVALID_ARGS",
"message":"Parameters error [reason=\"user authentication failed, the user indicated by bk_username is not verified\"]",
"result":false
}
- 原因:
- 提供的用户认证信息里面,只有 bk_username,没有 bk_token, access_token 等能表示用户真实身份的信息,而 bk_username 不能真实表示用户真实身份(非 verified)
- 处理:网关"插件配置”中,查找插件“免用户认证应用白名单(不推荐)”,在该插件配置中,将应用添加到免用户认证应用白名单中。该插件不推荐使用,非官方网关,暂可能无法添加此插件。
message: App has no permission to the resource
status: 403
{
"code": 1640301,
"data": null,
"code_name": "APP_NO_PERMISSION",
"message": "App has no permission to the resource",
"result": false
}
- 原因: 网关 API 开启了
校验访问权限
, 调用方bk_app_code
无权限调用(没有申请权限或者权限过期)
- 处理: 申请权限/权限续期
权限