应用平台 APPSTAGE-新建我的屏幕:Token校验
Token校验
客户端在使用Token校验的流程如下。
已获取大屏分享链接和Token。
例如,分享链接https://console.ulanqab.huawei.com/sve/preview.html?region=cn-north-7#/screen/share/18cd21df7bc-WPgj_GqRc。其中“region”的值为“cn-north-7”,“pageId”的值为“18cd21df7bc-WPgj_GqRc”。
- 使用代码开发工具将大屏分享链接中的pageId和region拼接成如下格式的字符串。
pageId|region;
- 使用HmacSHA256算法对拼接的字符串进行签名,并将签名后的字符串使用Base64进行转换。签名时需要使用对应的Token。
HmacSHA256签名和Base64转换的示例如下:
import java.security.*; import javax.crypto.*; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; import java.net.URLEncoder; public class ShareWithTokenTest { public static void main(String[] args) throws Exception { System.out.println(getShareUrlWithToken("********722467a9477b5b*******", "cn-7", "*******r1tyy1C7Jenni3p*********")); } public static String getShareUrlWithToken(String pageId, String region, String token){ String data = pageId + "|" + region; String signature = HMA CS HA256(data.getBytes(), token.getBytes()); String url = "https://console.huaweicloud.com/sve/share/page.html?id=" + pageId + "®ion=" + region + "&sve_signature=" + signature; return url; } //采用HmacSHA256进行签名并进行Base64转换 public static String HMACSHA256(byte[] data, byte[] key) { try { SecretKeySpec signingKey = new SecretKeySpec(key, "HmacSHA256"); Mac mac = Mac.getInstance("HmacSHA256"); mac.init(signingKey); return URLEncoder.encode(Base64.encodeBase64String(mac.doFinal(data))); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } return null; } }
- 将转换后的字符串赋值给sveSignature,sveSignature参数拼接到大屏分享链接中获取新的访问链接。
例如,新的访问链接https://console.ulanqab.huawei.com/sve/preview.html?sveSignature=1OP99N6yxCDmEiH4aNMU1GAwtKspSg4fJ/zh0679k=®ion=cn-north-7#/screen/share/18cd21df7bc-WPgj_GqRc