GenerateTestUserSig.js 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import LibGenerateTestUserSig from "./lib-generate-test-usersig-es.min";
  2. /**
  3. * 腾讯云 SDKAppId,需要替换为您自己账号下的 SDKAppId。
  4. *
  5. * 进入腾讯云实时音视频[控制台](https://console.cloud.tencent.com/rav ) 创建应用,即可看到 SDKAppId,
  6. * 它是腾讯云用于区分客户的唯一标识。
  7. */
  8. const SDKAPPID = 1400430241;
  9. /**
  10. * 签名过期时间,建议不要设置的过短
  11. * <p>
  12. * 时间单位:秒
  13. * 默认时间:7 x 24 x 60 x 60 = 604800 = 7 天
  14. */
  15. const EXPIRETIME = 604800;
  16. /**
  17. * 计算签名用的加密密钥,获取步骤如下:
  18. *
  19. * step1. 进入腾讯云实时音视频[控制台](https://console.cloud.tencent.com/rav ),如果还没有应用就创建一个,
  20. * step2. 单击“应用配置”进入基础配置页面,并进一步找到“帐号体系集成”部分。
  21. * step3. 点击“查看密钥”按钮,就可以看到计算 UserSig 使用的加密的密钥了,请将其拷贝并复制到如下的变量中
  22. *
  23. * 注意:该方案仅适用于调试Demo,正式上线前请将 UserSig 计算代码和密钥迁移到您的后台服务器上,以避免加密密钥泄露导致的流量盗用。
  24. * 文档:https://cloud.tencent.com/document/product/647/17275#Server
  25. */
  26. const SECRETKEY = '941e01ca06e94057de3013b235b67a784ea28b45c43decbd518e765f7d5fc140';
  27. /*
  28. * Module: GenerateTestUserSig
  29. *
  30. * Function: 用于生成测试用的 UserSig,UserSig 是腾讯云为其云服务设计的一种安全保护签名。
  31. * 其计算方法是对 SDKAppID、UserID 和 EXPIRETIME 进行加密,加密算法为 HMAC-SHA256。
  32. *
  33. * Attention: 请不要将如下代码发布到您的线上正式版本的 App 中,原因如下:
  34. *
  35. * 本文件中的代码虽然能够正确计算出 UserSig,但仅适合快速调通 SDK 的基本功能,不适合线上产品,
  36. * 这是因为客户端代码中的 SECRETKEY 很容易被反编译逆向破解,尤其是 Web 端的代码被破解的难度几乎为零。
  37. * 一旦您的密钥泄露,攻击者就可以计算出正确的 UserSig 来盗用您的腾讯云流量。
  38. *
  39. * 正确的做法是将 UserSig 的计算代码和加密密钥放在您的业务服务器上,然后由 App 按需向您的服务器获取实时算出的 UserSig。
  40. * 由于破解服务器的成本要高于破解客户端 App,所以服务器计算的方案能够更好地保护您的加密密钥。
  41. *
  42. * Reference:https://cloud.tencent.com/document/product/647/17275#Server
  43. */
  44. function genTestUserSig(userID) {
  45. const generator = new LibGenerateTestUserSig(SDKAPPID, SECRETKEY, EXPIRETIME);
  46. const userSig = generator.genTestUserSig(userID);
  47. return {
  48. sdkAppID: SDKAPPID,
  49. userSig: userSig
  50. };
  51. }
  52. function setData(obj,callback){
  53. let that = this;
  54. let keys = [];
  55. let val,data;
  56. Object.keys(obj).forEach(function(key){
  57. keys = key.split('.');
  58. val = obj[key];
  59. data = that.$data;
  60. keys.forEach(function(key2,index){
  61. if(index+1 == keys.length){
  62. that.$set(data,key2,val);
  63. }else{
  64. if(!data[key2]){
  65. that.$set(data,key2,{});
  66. }
  67. }
  68. data = data[key2];
  69. })
  70. });
  71. setTimeout(()=>{
  72. callback&&callback()
  73. },500)
  74. }
  75. module.exports = {
  76. genTestUserSig,
  77. setData
  78. };