bag
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"desc": "业务失败信封样例(与 Java 端对拍):HTTP 200 + code≠0,data 原样携带;客户端必须抛 DException(code,msg,data)",
|
||||
"cases": [
|
||||
{
|
||||
"name": "code=4 未登录/登录过期",
|
||||
"httpStatus": 200,
|
||||
"envelope": { "code": 4, "msg": "登录已经过期,请重新登录", "data": null }
|
||||
},
|
||||
{
|
||||
"name": "code=5 业务校验失败(组下有子组/用户,拒绝删除)",
|
||||
"httpStatus": 200,
|
||||
"envelope": {
|
||||
"code": 5,
|
||||
"msg": "组下存在子组或用户,禁止删除",
|
||||
"data": { "groupId": 9, "childGroups": 2, "users": 35 }
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "code=5 身份切换:非白名单 appKey",
|
||||
"httpStatus": 200,
|
||||
"envelope": { "code": 5, "msg": "当前应用无权切换身份", "data": null }
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"desc": "成功信封样例(与 Java 端对拍):BoaUser 裸数据,含 currentRole 多角色嵌套;亦兼容 {code:0,data:{}} 包裹形态",
|
||||
"bareData": {
|
||||
"id": 1001,
|
||||
"account": "zhangsan",
|
||||
"name": "张三",
|
||||
"idcard": "510101199001011234",
|
||||
"phone": "13800138000",
|
||||
"email": "zhangsan@example.com",
|
||||
"gender": 1,
|
||||
"profilePicture": "https://cdn.example.com/avatar/1001.png",
|
||||
"type": 1,
|
||||
"status": 1,
|
||||
"dept": { "id": 11, "name": "教务处", "parentId": 2, "type": 3, "sort": 1 },
|
||||
"school": { "id": 2, "name": "云海第一中学", "parentId": 1, "type": 2, "sort": 1 },
|
||||
"bureau": { "id": 1, "name": "云海市教育局", "parentId": null, "type": 1, "sort": 0 },
|
||||
"groups": [
|
||||
{ "id": 1, "name": "云海市教育局", "type": 1 },
|
||||
{ "id": 2, "name": "云海第一中学", "type": 2 },
|
||||
{ "id": 11, "name": "教务处", "type": 3 }
|
||||
],
|
||||
"roleIds": [3, 5],
|
||||
"currentRole": {
|
||||
"roleId": 3,
|
||||
"roleName": "教师",
|
||||
"schId": 2,
|
||||
"schName": "云海第一中学",
|
||||
"childId": 21,
|
||||
"childName": "高一(3)班"
|
||||
},
|
||||
"schools": [
|
||||
{ "id": 2, "name": "云海第一中学", "type": 2 },
|
||||
{ "id": 4, "name": "云海第二中学", "type": 2 }
|
||||
]
|
||||
},
|
||||
"wrappedData": {
|
||||
"code": 0,
|
||||
"msg": "",
|
||||
"data": { "id": 1001, "account": "zhangsan", "name": "张三" }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,124 @@
|
||||
{
|
||||
"algorithm": "HmacSHA256",
|
||||
"dataLevel": {
|
||||
"canonical": "data + '|' + ts",
|
||||
"output": "lowercase hex"
|
||||
},
|
||||
"requestLevel": {
|
||||
"canonical": "METHOD + '\\n' + canonicalTarget + '\\n' + ts",
|
||||
"output": "base64",
|
||||
"note": "canonicalTarget 为剥离部署 basePath(如 /userbase,与 UserBase context-path 一致)后的服务端 canonical 口径(/oapi/**);客户端实现须在签名前完成剥离(对齐 Java AppSignInterceptor.stripBasePath / AppAuthFilter 剥 contextPath)"
|
||||
},
|
||||
"minSecretLength": 16,
|
||||
"cases": [
|
||||
{
|
||||
"name": "数据级-常规",
|
||||
"ts": "1700000000000",
|
||||
"secret": "0123456789abcdef",
|
||||
"data": "hello",
|
||||
"expectedDataSignHex": "9d79a45345dca5d12c0348d8c5cfd9be1a1ef9733b3f0c617f1eed5319b4a398"
|
||||
},
|
||||
{
|
||||
"name": "数据级-空串",
|
||||
"ts": "1700000000000",
|
||||
"secret": "0123456789abcdef",
|
||||
"data": "",
|
||||
"expectedDataSignHex": "022915adc73b73229e09bc6f1c5a5f51e6c323f48ba581c0e4af49ba5684ff20"
|
||||
},
|
||||
{
|
||||
"name": "数据级-含分隔符",
|
||||
"ts": "1700000000000",
|
||||
"secret": "0123456789abcdef",
|
||||
"data": "a|b",
|
||||
"expectedDataSignHex": "f988e0bcbc2c3ece3a5391c22255a3f1ed1d213b1afb1e0d8969a3b2384aaa8c"
|
||||
},
|
||||
{
|
||||
"name": "数据级-中文UTF8",
|
||||
"ts": "1700000000000",
|
||||
"secret": "app-secret-100476-yunhai",
|
||||
"data": "云海学通",
|
||||
"expectedDataSignHex": "e113d7086b2d4c0146477033cd386114d102b3acd0c12ce5c89d6833c7186d25"
|
||||
},
|
||||
{
|
||||
"name": "数据级-JSON体",
|
||||
"ts": "1699999999999",
|
||||
"secret": "app-secret-100476-yunhai",
|
||||
"data": "{\"id\":1,\"name\":\"zhang\"}",
|
||||
"expectedDataSignHex": "b405a624e084c6ebedb85f56931d3809917b87eba750057b72665ebf3d382c5e"
|
||||
},
|
||||
{
|
||||
"name": "数据级-超长数据",
|
||||
"ts": "1700000000000",
|
||||
"secret": "app-secret-100476-yunhai",
|
||||
"data": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
||||
"expectedDataSignHex": "be7812a22c1c7b9b6c0cd37382f4a074ca8c81d2e6d718053c3792df8c9ea84c"
|
||||
},
|
||||
{
|
||||
"name": "数据级-超长密钥",
|
||||
"ts": "1700000000010",
|
||||
"secret": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||
"data": "user/login",
|
||||
"expectedDataSignHex": "1b48440b7a7cb89502d9b2b2977bd7c2720eeef11ee1e8178167f170fb8a3d01"
|
||||
},
|
||||
{
|
||||
"name": "请求级-GET无参",
|
||||
"ts": "1700000000000",
|
||||
"secret": "app-secret-100476-yunhai",
|
||||
"method": "GET",
|
||||
"canonicalTarget": "/oapi/user/byId",
|
||||
"fullUrl": "http://base.bestsch.com/userbase/oapi/user/byId",
|
||||
"basePath": "/userbase",
|
||||
"expectedRequestSignBase64": "R4YDIRnThxqk40dWXsWPtPYpE6AnpyzGDzTlsRgB9L0="
|
||||
},
|
||||
{
|
||||
"name": "请求级-GET带query",
|
||||
"ts": "1700000000000",
|
||||
"secret": "app-secret-100476-yunhai",
|
||||
"method": "GET",
|
||||
"canonicalTarget": "/oapi/user/byId?id=123",
|
||||
"fullUrl": "http://base.bestsch.com/userbase/oapi/user/byId?id=123",
|
||||
"basePath": "/userbase",
|
||||
"expectedRequestSignBase64": "0xkI3XWSbomr+iddwXr4FS0lvMnzamJVpaAUg/35CoM="
|
||||
},
|
||||
{
|
||||
"name": "请求级-GET多参数",
|
||||
"ts": "1700000000000",
|
||||
"secret": "0123456789abcdef",
|
||||
"method": "GET",
|
||||
"canonicalTarget": "/oapi/group/byId?groupId=9&withSub=true",
|
||||
"fullUrl": "http://base.bestsch.com/userbase/oapi/group/byId?withSub=true&groupId=9",
|
||||
"basePath": "/userbase",
|
||||
"expectedRequestSignBase64": "O4f8XxmwxFapdzeuJ382PHCzau5kx6iEfmfJyXxlL3I="
|
||||
},
|
||||
{
|
||||
"name": "请求级-POST",
|
||||
"ts": "1700000000000",
|
||||
"secret": "app-secret-100476-yunhai",
|
||||
"method": "POST",
|
||||
"canonicalTarget": "/oapi/identity/switch",
|
||||
"fullUrl": "http://base.bestsch.com/userbase/oapi/identity/switch",
|
||||
"basePath": "/userbase",
|
||||
"expectedRequestSignBase64": "AW1LU585v3JLPvHj5jm6XTPtshFg6E+FtEkIG1p3bm4="
|
||||
},
|
||||
{
|
||||
"name": "请求级-中文query",
|
||||
"ts": "1700000000001",
|
||||
"secret": "app-secret-100476-yunhai",
|
||||
"method": "GET",
|
||||
"canonicalTarget": "/oapi/user/byLoginName?loginName=张三",
|
||||
"fullUrl": "http://base.bestsch.com/userbase/oapi/user/byLoginName?loginName=%E5%BC%A0%E4%B8%89",
|
||||
"basePath": "/userbase",
|
||||
"expectedRequestSignBase64": "cTBpNkIqJLAOgwh/MasWUjIZKk8v6ZKDXjxSISCidjQ="
|
||||
},
|
||||
{
|
||||
"name": "请求级-小写method(与GET不同)",
|
||||
"method": "get",
|
||||
"canonicalTarget": "/oapi/user/byId",
|
||||
"fullUrl": "http://base.bestsch.com/userbase/oapi/user/byId",
|
||||
"basePath": "/userbase",
|
||||
"ts": "1700000000000",
|
||||
"secret": "0123456789abcdef",
|
||||
"expectedRequestSignBase64": "g6mmXqcSNiTMHQKQUACLG4YwIP4CDq7eNbjNXtH/HWM="
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user