sdksid接口验证指南

一、什么是sdksid

sdksid是点播sdk请求点播服务api传递的验证参数,对应单独的接口验证方式,此验证方式称作sdksid接口验证。与之对应的是点播旧版sdk使用thqs算法生成签名的接口验证方式。

二、sdksid的使用流程

实现流程

  1. app调用sdk功能api, 使用sdksid验证方式时需要调用对应的api, 具体参照SDK开发指南。

  2. sdk在请求获得场景服务端接口时,先回调app获取sdksid。

  3. app在回调函数中请求app服务端接口获取sdksid,app可对sdksid做缓存。

  4. app服务端接口按照指定规则计算sdksid, 此接口可以增加一些接口验证,如登录状态等,避免随意请求。

  5. app服务端接口将计算好的sdksid和sdksid过期时间返回给app, app可将sdksid及期过期时间缓存起来,下次回调时可复用, 是否缓存及缓存方式由app实现,需要保证缓存过期时间小于生成sdksid时指定的过期时间。

  6. app回调函数将sdksid返回给sdk。

  7. sdk将 sdksid + userid + 业务参数提交给获得场景服务器接口进行校验, 其中sdksid是存放在请求头Sdk-Sid中。

  8. 获得场景服务器接口校验sdksid,确认合法性。

  9. 校验通过后,会向sdk提供正常服务。

三、sdksid的生成规则

sdksid的生成分为三步:

  1. 生成一个字符串qs, qs="expire=过期时间秒数&time=当前时间秒数"

  2. 生成一个hash值, hash=md5(qs + 点播key)

  3. 生成sdksid, sdksid = Base64.encode(qs + "&hash=" + hash)

以上字符串拼接顺序不可改变。

java示例代码如下:


   /**
     * 生成sdksid字符串
     * @param vodKey 点播key
     * @return 返回sdkSid字符串
     */
    public static String createSdksid(String vodKey) {
        long nowTime = System.currentTimeMillis() / 1000;
        String qs = String.format("expire=%s&time=%s", nowTime + 600, nowTime);
        // 将拼接后的字符串qs加上点播key后通过md5生成hash签名
        String hash = Hashlib.md5(qs + vodKey);
        // 将hash与之前的字符串qs拼接在一起,hash参数必须拼接在最后边
        qs = qs + "&hash=" + hash;
        // 将最终的qs字符串进行Base64编码后生成新字符串返回,返回结果即为sdksid
        return new String(Base64.getEncoder().encode(qs.getBytes()), StandardCharsets.UTF_8);    
    }

某些app中可能使用多个获得场景的账号,sdksid只能用于其生成时对应点播key的账号,不可在多个账号之间共用。

四、测试demo sdksid的生成

为了方便sdk demo的运行,sdk demo在服务端生成sdksid的接口由点播服务端提供,只给demo中指定的测试账号使用。

results matching ""

    No results matching ""