云服务器内容精选

  • 请求示例 启用消息签名和加密的请求示例: {"nonce": "AmgjjEAJbrMzWmUw","timestamp": 15093849585,"eventType": "UPDATE_ORGANIZATION ","data": "6xrHydJIXEWxQhUa3UqsXHWsDZ5LTAo/xU3zhjq9H3syCuFYDYKg==","signature": "K08yDiTEc094KoccOY+VYLQFxxQ="} 请求包体data解密后的JSON字符串格式。 根据请求的组织机构ID参数更新机构信息,将变更的组织机构属性发送给企业应用。 {"id": "6c5bb468-14b2-4183-baf2-06d523e03bd3","code": "1000003","name": "武汉分公司","parentId": "5b183439-36a8-4d08-94ba-61b3c8d40b66"}
  • 响应示例 状态码:200 请求成功 启用消息签名和加密的响应示例: {"code": "200","message": "success","data": "T41FtX1Q1z1lZM0DDcUGFyaazO3NgnMbgK6UeWT35Druf5zyXg="} 响应包体data解密后的JSON字符串格式: {"id": "6c5bb468-14b2-4183-baf2-06d523e03bd3"}
  • 请求参数 表1 请求参数 参数 固定参数 参数类型 描述 id 是 String(50) 下游企业应用的机构ID。 当机构通过新增组织事件同步成功后,下游企业应用创建机构并生成机构ID,回传至 OneAccess ,作为该机构的唯一标识。 code 是 String(100) 组织编号,全局唯一。 name 是 String(40) 组织名称,所在层级下名称不能重复。 parentId 否 String(50) 父组织ID。
  • 请求示例 启用消息签名和加密的请求示例: {"nonce": "AmgjjEAJbrMzWmUw","timestamp": 15093849585,"eventType": "CREATE_ORGANIZATION","data": "6lu6gxrHydJIXEWxQhUa3UqsWsDZ5LTAo/xU3zhjq9H3syCuFYDYKg==","signature": "K08yDiTEc094KoccOY+VYLQFxxQ="} 请求包体data解密后的JSON字符串格式: {"code": "1000003","name": "武汉分公司","parentId": "5b183439-36a8-4d08-94ba-61b3c8d40b66"}
  • 响应示例 状态码:200 请求成功 启用消息签名和加密的响应示例: {"code": "200","message": "success","data": "j3rRBbc1Q1z1lZM0DDcUGFyaazO3NgnMbgK6UeWT35Druf5zyXg="} 响应包体data解密后的JSON字符串格式: {"id": "6c5bb468-14b2-4183-baf2-06d523e03bd3"}
  • 接口格式 OneAccess同步事件回调接口的请求方式为POST,数据编码为UTF-8,数据格式为JSON。 如果应用系统接收事件回调的URL为 https://{app_domain}/callback,当OneAccess的企业发生组织机构或用户变动时,OneAccess将发生变动的业务数据推送至该回调地址。 URL POST https://{app_domain}/callback 请求头 Authorization: Bearer {access_token},可参考表1中的安全令牌。 请求参数 表1 请求参数 参数 参数类型 描述 nonce String 随机数,与timestamp结合使用,用于防止请求重放攻击。 timestamp Integer 时间戳,与nonce结合使用,用于防止请求重放攻击。 eventType String 事件类型,参见事件类型列表。 data String 消息体,当未开启加密时,发送明文的消息体;当开启加密时,发送加密的消息体,需要解密得到消息内容,解密后有random、msg二个字段,其中msg即为明文消息内容。 signature String 消息签名,当未开启签名时,签名信息为空字符串;当开启签名时,生成签名信息,signature计算结合企业应用填写的签名密钥(signatureSaltValue)、请求中的timestamp、nonce、加密的消息体。 响应参数 表2 响应参数 参数 参数类型 描述 code String 返回code码,200表示成功,失败错误码请参考公共返回码。 message String 处理出错时的错误原因说明。 data String 返回的消息体。不同的业务回调要求返回不同内容,比如回复空串,或者要求的业务数据。 当未开启加密时,返回明文的消息体。 当开启加密时,返回加密的消息体,需要解密得到消息内容,解密后有random、msg二个字段,其中msg即为明文消息内容。 请求示例 未启用消息签名和加密的请求示例: {"nonce": "123456","timestamp": 1783610513,"eventType": "eventType","data": "明文的消息","signature": ""} 启用消息签名和加密的请求示例: {"nonce": "123456","timestamp": 1783610513,"eventType": "eventType","data": "1ojvw2WPvW7LijxS8UvISr8pdDP+rXpPbcLGOmIBNbWetRg7IP0vdhkl","signature": "111108bb8e6dbce3c9671d6fdb69d15066227608"} 响应示例 状态码:200 请求成功 未启用消息签名和加密的响应示例: {"code": "200","message": "success","data": "明文的消息"} 启用消息签名和加密的响应示例: {"code": "200","message": "success","data": "P+rXpWetRg7IP0vdhVgkVwSoZBJeQwY2zhROsJq/HJ+q6tp1qhl9L1+c"}
  • 请求示例 启用消息签名和加密的请求示例: {"nonce": "AmgjjEAJbrMzWmUw","timestamp": 1509384....,"eventType": "CREATE_USER","data": "6lu6gxrdJIXEWxQhUa3UqsXHWsDZ5LTAo/xU3zhjq9H3syCuFYDYKg==","signature": "K08yDiTEc094KoccOY+VYLQFxxQ="} 请求包体data解密后的JSON字符串格式: {"username": "zhangsan","name": "张三","mobile": "1899876....","email": "zhangsan@test.com","organizationId": "391551e8-160f-4993-8177-e7b9c5f6....","extAttr1": "value","extAttr2": "value"}
  • 请求示例 启用消息签名和加密的请求示例: {"nonce": "AmgjjEAJbrMzWmUw","timestamp": "15093849585","eventType": "DELETE_USER","data": "6IXEWxQhUa3UqsXHWsDZ5LTAo/xU3zhjq9H3syCuFYDYKg==","signature": "K08yDiTEc094KoccOY+VYLQFxxQ="} 请求包体data解密后的JSON字符串格式: {"id": "c3a26dd3-27a0-4dec-a2ac-ce211e10...."}
  • 请求参数 以下请求参数以企业实际配置的身份同步参数为准,企业管理员可以参考9设置同步至目标应用的属性。 表1 请求参数 参数 固定参数 参数类型 描述 username 是 String(100) 用户名。 name 是 String(40) 用户姓名。 organizationId 是 String 组织机构ID。 password 是 String 密码。 disabled 是 Boolean 是否禁用,true表示禁用状态,fasle表示启用(未禁用)。 firstName 否 String(20) 名字。 middleName 否 String(20) 中间名。 lastName 否 String(20) 姓氏。 mobile 否 String 手机号。 email 否 String 邮箱地址。 extAttr1 否 -- 扩展属性1,企业扩展的用户属性,以实际情况为准。 extAttr2 否 -- 扩展属性2,企业扩展的用户属性,以实际情况为准。
  • 响应示例 状态码:200 请求成功 启用消息签名和加密的响应示例: {"code": "200","message": "success","data": "P+rXpWetRg7IP0vdhVgkVwSoZBJeQwY2zhROsJq/HJ+q6tp1qhl9L1+c"} 响应包体data解密后的JSON字符串格式: {"id": "c3a26dd3-27a0-4dec-a2ac-ce211e10...."}
  • 同步状态说明 本节主要介绍同步完成后,各种状态的含义。方便您对异常状态进行排查定位。 以应用账号App_acc01、应用机构App_org01、原同步事件E0、新同步事件E1为例。 待处理 英文为“PENDING”,当应用账号App_acc01在生成新的同步事件E1时,如果该应用账号App_acc01之前的同步事件E0未执行完成,则生成的新事件E1的状态为待处理。 排队 英文为“QUEUING”,当应用账号App_acc01的同步事件E1可以执行时,会将该事件发送至Kafka执行消息队列,发送成功后,修改ES中存储的同步事件E1的状态为排队,表示该事件已成功加入执行队列。 发送 英文为“RUNNING”,当同步事件E1可执行时,在开始执行前将存储在ES中的同步事件E1的状态修改为RUNNING,修改成功后,调用下游应用系统的接口开始同步,表示该事件已成功处于运行状态。 成功 英文为“SUC CES S”,同步事件执行成功后,会将该事件的状态SUCCESS写入ES,表示该事件已执行成功。 失败 英文为“FAILURE”,同步事件执行失败后,会将该事件的状态FAILURE写入ES,表示该事件已执行失败。 忽视 英文为“IGNORED”,该状态涉及2种场景: 当应用账号 App_acc01 在执行一个更新的同步事件时,如果发现后续有新的更新事件,则直接忽视该事件,并执行新的更新事件。 执行全量同步时,会忽视之前所有的同步事件。 略过 英文为“SKIPPED”,该状态暂时未使用。 挂起 英文为“WAITING”,当应用账号App_acc01对应用机构App_org01存在依赖关系时,应用机构App_org01未同步成功,则该机构下应用账号App_acc01的所有同步事件状态为挂起。
  • 签名校验/加解密术语 表1 术语 术语 说明 signature 消息签名,用于验证请求是否来自OneAccess,以防攻击者伪造。签名算法为HMAC-SHA256 + Base64。 AESKey AES算法的密钥,加密算法为AES/GCM/NoPadding + Base64。 msg 明文消息体,格式为JSON。 encrypt _msg 明文消息msg加密处理并进行Base64编码后的密文。
  • 密文解密过程 对密文进行BASE64解码。 byte[] encryptStr = Base64.getDecoder().decode(data); 使用AESKey进行解密。 Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding"); SecretKeySpec secretKey = new SecretKeySpec(加密密钥.getBytes(StandardCharsets.UTF_8), "AES"); cipher.init(2, secretKey); byte[] bytes = cipher.doFinal(encryptStr); 去掉rand_msg头部的16个随机字节,剩余的部分即为明文内容msg。 String dataStr = StringUtils.split(new String(bytes, StandardCharsets.UTF_8), "&")[1];
  • 明文加密过程 拼接明文字符串。明文字符串由16个字节的随机字符串、明文msg拼接组成,中间使用&进行连接。以下为Java语言示例: String dataStr = RandomStringUtils.random(16, true, false) + "&" + data; 对拼接后的明文字符串使用AESkey加密后,再进行Base64编码,获得密文encrypt_msg。以下为Java语言示例: Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding"); SecretKeySpec secretKey = new SecretKeySpec(加密密钥.getBytes(StandardCharsets.UTF_8), "AES"); cipher.init(1, secretKey); byte[] bytes = dataStr.getBytes(StandardCharsets.UTF_8); String ecnryptStr = Base64.getEncoder().encodeToString(cipher.doFinal(bytes));
  • 公共返回码 事件回调接口采用HTTP状态码表示操作结果成功或者失败。企业应用的回调服务参考以下错误码及错误提示进行返回,OneAccess将返回的错误码和错误信息保存到应用同步记录中。 表1 公共返回码 返回码code 说明 200 success。 400 参数XX已存在,如参数userName已存在。 参数XX不能为空,如参数id不能为空。 参数XX超过指定长度,如参数name超过指定的长度。 参数XX格式不符合,如参数email格式不符合。 401 接口鉴权失败。 404 XX记录不存在,如用户不存在。 500 系统繁忙,请稍后重试。 父主题: 通过事件回调方式同步数据至应用