直播云

  • 直播云 > API 文档 > 请求鉴权

    请求鉴权

    最近更新时间:2021-10-29 15:50:39

    七牛云会对每一个API请求进行身份验证,用户需要使用 密钥(AK/SK) 经过特定方法生成 管理凭证 QiniuToken 并在 HTTP 请求头部使用Authorization 字段传入该管理凭证,形式如下:

    Authorization: <QiniuToken>
    

    七牛支持对各语言服务端 SDK 都已经封装管理凭证,不需要再手动生成,各 SDK 详细信息可见软件开发工具包

    生成QiniuToken

    准备工作.获取密钥(AK/SK)

    生成七牛管理凭证,需要用到密钥,密钥包含AccessKey/SecretKey。第一次使用七牛API之前,您需要在七牛开发者平台的 密钥管理 中取得密钥。

    注意: 密钥(AccessKey/SecretKey)是非常重要且隐私的信息,泄露可能会造成严重的后果,请不要直接放在客户端。

    具体步骤如下:

    1. 登录 七牛开发者平台
    2. 进入七牛 个人中心/密钥管理 页面。
    3. 在 密钥管理 页面,获取一对AccessKey/SecretKey。

    Step1. 构造待签名的 Data

    待签名的data字符串由以下几个参数构成,拼接规则为:

    data = <Method> + " " + <Path> + "?<RawQuery>" + "\nHost: " + <Host> + "\nContent-Type: " + <contentType> + "\n\n" + <bodyStr>
    

    注:<>里面的内容需替换成相应的变量。

    参数 必填 说明
    Method 支持 GET、POST、PUT 和 DELETE 方式, 注意方法为全大写
    Path 请求路径,实际的请求路径详见各接口说明的请求包
    RawQuery 如不存在则不用添加 ?<RawQuery>
    Host 请求域名,例如:pili.qiniuapi.com
    contentType 请求内容类型,如果参数为空,则不用加 "\nContent-Type: " + <ontentType >
    bodyStr 请求Body <bodyStr>: 如果 <Content-Length> 存在且 Body 不为空,同时 <Content-Type> 存在且不为空也不等于 "application/octet-stream"时,才需要加上

    注意:无论<Content-Type><bodyStr> 是否为空,中间的 “\n\n” 都一定要加。

    代码为:

    // 1. 添加 Path
    data = "<Method> <Path>"
    // 2. 添加 Query,前提: Query 存在且不为空
    if "<RawQuery>" != "" {
    data += "?<RawQuery>"
    }
    // 3. 添加 Host
    data += "\nHost: <Host>"
    // 4. 添加 Content-Type,前提: Content-Type 存在且不为空
    if "<Content-Type>" != "" {
    data += "\nContent-Type: <Content-Type>"
    }
    // 5. 添加回车
    data += "\n\n"
    // 6. 添加 Body,前提: Content-Length 存在且 Body 不为空,同时 Content-Type 存在且不为空或 "application/octet-stream"
    bodyOK := "<Content-Length>" != "" && "<Body>" != ""
    contentTypeOK := "<Content-Type>" != "" && "<Content-Type>" != "application/octet-stream"
    if bodyOK && contentTypeOK {
    data += "<Body>"
    }
    

    Step2.计算 HMAC-SHA1 签名,并对签名结果做URL 安全的 Base64 编码

    sign = hmac_sha1(data, "Your_Secret_Key")
    encodedSign = urlsafe_base64_encode(sign)
    

    Step3.将 Qiniu 标识与 AccessKey、encodedSign 拼接得到管理凭证

    <QiniuToken> = "Qiniu " + "Your_Access_Key" + ":" + encodedSign
    

    QiniuToken示例

    GET /v2/hubs/PiliSDKTest/streams/Y2FydGVyMjAwMA== HTTP/1.1
    Host: pili.qiniuapi.com
    User-Agent: pili-sdk-go/v2 go1.6 darwin/amd64
    Authorization: Qiniu 7O7hf7Ld1RrC_fpZdFvU8aCgOPuhw2K4eapYOdII:PGTUV-oRxWAIl6mdneJPSJieyyQ=
    Content-Type: application/x-www-form-urlencoded
    Accept-Encoding: gzip
    
    以上内容是否对您有帮助?
  • Qvm free helper
    Close