appKey和appSecret用于租户URL加密分享。加密分享进入应用或打开应用一览,有效期默认为15分钟。在有效期内,根据appKey和appSecret生成的签名参数保证页面的安全性。若Default工作空间设置了app_secret,访问一览页面时会提示“权限不足”。若需打开页面,需完成以下步骤:
- 记录接入管理中的appKey和appSecret。
2. 按字母序排序appKey和appSecret以及当前时间戳,进行SHA-1摘要签名。
3. 将时间戳和签名分别命名为timestamp和signature。
4. 将appKey、timestamp、signature参数放入URL的querystring中。注意在进入应用接口(enterAppli、getEnterAppliURL)和获取列表接口(getAppliList)时,不要携带appSecret,以免泄露密钥。
java代码示例public static String getSignature( String key, String secret, String timestamp){String[] arr = new String[] { key, secret, timestamp }; // appKey、appSecret、timestamp三个参数进行字典序排序 Arrays.sort(arr); StringBuilder sb = new StringBuilder(); //将三个参数字符串拼接成一个字符串 for (int i = 0; i < arr.length; i++) { sb.append(arr[i]); } MessageDigest md; String signature = null; try { md = MessageDigest.getInstance("SHA-1"); // 进行sha1摘要 byte[] digest = md.digest(sb.toString().getBytes()); signature = byteToStr(digest); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return signature;} /** * 将字节数组转换为十六进制字符串 * * @param byteArray * @return */ private static String byteToStr(byte[] byteArray) { String strDigest = ""; for (int i = 0; i < byteArray.length; i++) { strDigest += byteToHexStr(byteArray[i]); } return strDigest; } /** * 将字节转换为十六进制字符串 * * @param mByte * @return */ private static String byteToHexStr(byte mByte) { char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; char[] tempArr = new char[2]; tempArr[0] = Digit[(mByte >>> 4) & 0X0F]; tempArr[1] = Digit[mByte & 0X0F]; String s = new String(tempArr); return s; }
PHP代码示例// 排序sort($arr, SORT_NATURAL);$string = implode('', $arr);$signature = sha1($string);