阿里云首页 移动开发平台 mPaaS

安全加签

关于安全加签

为保证通话安全性,在使用音视频通话前,您需要对通话应用添加签名,用于客户端与服务端之间的安全性校验。

客户端每次通话前,向业务服务端发送请求获取签名,然后传入流媒体 SDK,并使用该签名与流媒体服务器完成安全性校验。完整的流程如下:
signature

对应用进行安全加签的步骤如下:

  1. 在 mPaaS 控制台上获取应用及音视频通话相关参数。加签代码中需要使用到 mPaaS 应用和音视频通话的相关参数,请在加签前获取 appIdworkspaceIdbizNamekey
  2. 在您的 mPaaS 账号已登录的情况下,在服务端上按照规则使用密钥生成签名。

操作步骤

  1. 获取 appIdworkspaceId
    1. 登录 mPaaS 控制台,进入目标应用。
    2. 点击 总览, 打开对应客户端的 代码配置 面板,在右侧 代码配置 面板中获取 appIdworkspaceId
      appId
  2. 获取应用的 bizNamekeybizName 为视频应用业务 ID,key 为应用的私钥。

    1. 登录 mPaaS 控制台,进入目标应用,点击 音视频通话 > 通话应用管理
    2. 在通话应用管理页面获取 bizName
    3. 点击 查看密钥 获取 key
      bizname
  3. 在服务端生成签名。

    1. 按照以下顺序将相关参数拼接成待加密的字符串。
      1. String encryptStr = bizName + appId + workspaceId + uid + expireTime;
      其中:
      • appIdworkspaceIdbizName 为您在 mPaaS 控制台获取的实际值。
      • uidexpireTime 为用户自定义参数。uid 为业务用户 ID,由业务方传入。expireTime 为签名过期时间,单位为毫秒,由当前时间+有效期组成,示例如下。
        1. long expire = 5 * 60 * 1000L;// 签名有效期(ms),比如 5 分钟
        2. long expireTime = System.currentTimeMillis() + expire;// 签名生效截止时间: 当前时间 + 有效期
    2. 使用 RSA 加密生成签名,其中 key 为您在 mPaaS 控制台获取的密钥。

      1. String sign = EncryptUtils.encryptByPrivate(encryptStr, EncryptUtils.getPrivateKey(key));// 加密字符串
      2. //RSA 私钥加密
      3. public static String encryptByPrivate(String content, PrivateKey privateKey) throws Exception {
      4. Cipher cipher = Cipher.getInstance("RSA");
      5. cipher.init(Cipher.ENCRYPT_MODE, privateKey);
      6. return Base64.getEncoder().encodeToString(cipher.doFinal(content.getBytes("UTF-8")));
      7. }
      8. //将 base64 编码后的 RSA 私钥字符串转成 PrivateKey 实例
      9. public static PrivateKey getPrivateKey(String privateKey) throws Exception {
      10. byte[] keyBytes = Base64.getDecoder().decode(privateKey);
      11. PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
      12. KeyFactory keyFactory = KeyFactory.getInstance("RSA");
      13. return keyFactory.generatePrivate(keySpec);
      14. }