访问控制SDK
  • 帮助与文档 点播 鉴权 访问控制SDK

    访问控制SDK

    签名鉴权

    接口通过AccessKey 和 SecrertKey实现鉴权控制,这一对Key由苏宁视频云下发

    AccessKey用于表示访问用户,SecretKey用于加密访问凭证,SecretKey必须保密,仅供放在服务器端使用

    签名算法

    每一次接口访问均需要在HTTP请求头部增加Authorization字段,其值包含签名加密信息,示例如下:

    GET /svc/api3/channel/list?<params>

    HOST svc.suning.com

    version 3.0

    Authorization <签名加密信息>

    签名加密信息是用于验证请求合法性的依据,请求中不携带该信息的请求将返回认证失败错误

    签名加密信息生成算法如下:

    1. 待签名字符串

      
      json = {"rid":"b85de7d0b8c342cc823df9b36e0e4244","deadline":1466406000}
                                          

      假设AccessKey 和 SecrertKey

      AccessKey:oDgJmy1-HHgSiCvCB4-m5irVU6BKjUkaTeyP4axA

      SecrertKey:FUAqHxu0_MJB1kZREov0UJ9mChQtS8DyGXad0oec

      rid:表示本次请求唯一值

      deadline:access_token预设过期UNIX时间戳(单位:秒),最大值2天后

    2. 对待签名字符串进行URL安全的Base64编码

      encode_json = urlsafe_base64(json)

      结果:eyJyaWQiOiJiODVkZTdkMGI4YzM0MmNjODIzZGY5YjM2ZTBlNDI0NCIsImRlYWRsaW5lIjoxNDY2NDA2MDAwfQ

    3. 使用SecertKey计算待签名字符串HMAC-SHA1签名

      encode_sign = urlsafe_base64(sign)

      结果:XyNiAUlquA7O3iOEo3NQkHCgq30

      注:对hmac_sha1返回的原始二进制数据进行base64编码

    4. 对签名结果进行URL安全的Base64编码

      sign = hmac_sha1(encode_json,<SecertKey>)

      结果:5f236201496ab80ecede2384a373509070a0ab7d

    5. 将AccessKey、encode_sign和encode_json用英文冒号(:)连接起来

      access_token = <AccessKey>:<encode_sign>:<encode_json>

      结果:oDgJmy1-HHgSiCvCB4-m5irVU6BKjUkaTeyP4axA:XyNiAUlquA7O3iOEo3NQkHCgq30: eyJyaWQiOiJiODVkZTdkMGI4YzM0MmNjODIzZGY5YjM2ZTBlNDI0NCIsImRlYWRsaW5lIjoxNDY2NDA2MDAwfQ

      URL安全的Base64编码

      URL安全的Base64用于以URL方式传递Base64编码,该编码方式是生成数据内容的Base64字符串,然后替换结果字符串中的特殊字符,加号(+)换成中划线-,

      斜杠(/)换成下划线(_)

    Header设置

    接口请求的必要Header信息包含 Authorization、version、Content-Type

    Authorization用来鉴权请求是否合法

    version表示接口版本

    Content-Type表示请求参数编码,参数为json格式时值为application/json

    Authorization包含rid和deadline字段

    rid唯一请求标识

    deadline请求过期时间,请注意服务器时间是否正确,建议增加时间延迟以防止服务器之间时间不同步造成的请求失败

    • 文本导读:
    • 签名鉴权
    • 签名算法
    • Header设置
苏宁视频云服务