安全加签

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

安全加签使用步骤

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

安全加签

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

  1. 在 mPaaS 控制台上获取应用及音视频通话相关参数。加签代码中需要使用到 mPaaS 应用和音视频通话的相关参数,请在加签前获取 appId、workspaceId、bizName 及 key。

  2. 在您的 mPaaS 账号已登录的情况下,在业务服务端上按照规则使用密钥生成签名。

操作步骤

  1. 获取 appId 及 workspaceId。

    1. 登录 mPaaS 控制台,进入目标应用。

    2. 单击 下载 iOS 代码配置 下载 Android 代码配置,打开对应客户端的 代码配置 面板,在右侧 代码配置 面板中获取 appId 及 workspaceId。

  2. 获取应用的 bizName 及 key。bizName 为视频应用业务 ID,key 为应用的私钥。

    1. 登录 mPaaS 控制台,进入目标应用,单击 音视频通话 > 通话应用管理

    2. 在通话应用管理页面获取 bizName。

    3. 单击 查看密钥 获取 key。bizname

  3. 在业务服务端生成签名。

    1. 按照以下顺序将相关参数拼接成待加密的字符串。

      String encryptStr = bizName + appId + workspaceId + uid + expireTime;

      其中:

      • appIdworkspaceIdbizName 为您在 mPaaS 控制台获取的实际值。

      • uidexpireTime 为用户自定义参数。uid 为业务用户 ID,由业务方传入。expireTime 为签名过期时间,单位为毫秒,由当前时间+有效期组成,示例如下。

        说明

        目前 uid 只支持英文字母、数字、下划线的组合,且长度不超过 128 个字符。

        long expire = 5 * 60 * 1000L;// 签名有效期(ms),比如 5 分钟
        long expireTime = System.currentTimeMillis() + expire;// 签名生效截止时间: 当前时间 + 有效期
    2. 使用 RSA 加密生成签名,其中 key 为您在 mPaaS 控制台获取的密钥。

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