背景
为了满足客户安全诉求,WEB REST接口需要禁止Delete操作。同时为了保证兼容性,针对之前已提供的DELETE操作也需要进行兼容。
整体方案
提供服务器出厂定制项,生产阶段定制是否支持WEB使用HTTP DELETE方法标志位,后端和前端接口通过该标志位来判断使用DELETE或POST实施删除操作。
评审点
1、/UI/Rest/GenericInfo新增AllowHttpDelete属性,用于WEBUI判断是否使用HTTP DELETE方法实施删除操作;
2、新增资源协作接口和属性,表示是否使用HTTP DELETE方法实施删除操作;
3、新增服务器出厂定制项、导入导出项,表示是否使用HTTP DELETE方法实施删除操作;
详细描述
评审点1:/UI/Rest/GenericInfo接口新增AllowHttpDelete属性
资源URI :/UI/Rest/GenericInfo
属性列表:
| 属性名 | 类型 | 示例/默认值/取值约束 | readonly | 易变属性 | 实现PATCH | 操作权限 | 描述 |
|---|---|---|---|---|---|---|---|
| AllowHttpDelete | boolean | true | true | 否 | 否 | ReadOnly | 用于指示前端是否支持HTTP DELETE操作,若为false,则需要使用HTTP POST方法进行删除操作 |
说明:如果无法获取后端资源协作接口AllowHttpDelete 属性(社区新版本配套旧版本SDK场景),则/UI/Rest/GenericInfo中的AllowHttpDelete 属性值默认为true
响应示例
{
....
"AllowHttpDelete": true
}
评审点2: 新增资源协作接口bmc.kepler.Managers.WebService
接口描述 :该接口用于控制WEB服务全局策略,当前仅新增AllowHttpDelete 属性,用于控制前后端是否允许使用HTTP DELETE方法
路径:/bmc/kepler/Managers/1/WebService(已有)
接口:bmc.kepler.Managers.WebService(新增)
属性评审点:
| 属性名称 | 签名 | 只读 | 变化通知 | 属性描述 | 访问权限 | 属性来源 | 持久化类型 | 易变属性 |
|---|---|---|---|---|---|---|---|---|
| AllowHttpDelete | b | false | true | 是否允许使用HTTP DELETE方法 | Read: ReadOnly Write: BasicSetting |
定制项 | 掉电持久化 | false |
说明:需要在接口层进行控制:
1)AllowHttpDelete为false时无法访问相关业务的DELETE方式的删除接口。
2)AllowHttpDelete为true时DELETE和POST方式均可进行删除。
评审点3:新增导入导出项、服务器出厂定制项
1)新增AllowHttpDelete导入导出项,具体如下:
| 配置项名称 | 配置项类别 | 配置项 | 归属组件 | 取值说明 | 默认值 | 导入导出类型(ExportOnly,ImportAndExport) | 导出后是否可直接导入(无修改) |
|---|---|---|---|---|---|---|---|
| 允许HTTP DELETE方法 | WebService | AllowHttpDelete | web_backend | boolean类型,用于表示web是否支持HTTP DELETE操作: true:web支持HTTP DELTE操作 false:web不支持HTTP DELETE操作,需要使用HTTP POST方法实现删除操作 |
true | ImportAndExport | 是 |
示例:
{
....
"ConfigData": {
"type": "object",
"properties": {
"WebService": {
"type": "object",
"properties": {
"AllowHttpDelete": {
"type": "boolean",
"Import": true,
"AttributeType": "ImportAndExport",
"description": "是否允许使用HTTP DELETE方法执行删除操作"
}
}
}
}
}
}
2)新增BMCSet_AllowHttpDelete服务器出厂定制项,具体如下:
| 定制化项名称 | 定制化项 | 归属组件 | 取值说明 | 默认值 | 处理逻辑(伪代码) | 说明 | 实现方式(配置文件导入、IPMI命令) | |
|---|---|---|---|---|---|---|---|---|
| 允许本地用户开启的登录接口 | BMCSet_AllowHttpDelete | web_backend | 字符串类型: on:允许web使用HTTP DELETE方法 off:不允许web使用HTTP DELETE方法 |
on | if(BMCSet_AllowHttpDelete == 空) AllowHttpDelete = on End 设置属性AllowHttpDelete 为配置值 |
设置为false时表示不允许使用HTTP DELETE方法,前后端需要使用对应的HTTP POST方法进行删除操作 | 配置文件导入 |
评审结论
评审通过
遗留问题
无