开发者社区> 问答> 正文

如何验证签名正确

已解决

展开
收起
2018-04-30 01:44:09 1384 0
1 条回答
写回答
取消 提交回答
  • 采纳回答

    详细解答可以参考官方帮助文档

    用户可以在 HTTP 请求中增加 Authorization(授权)的 Head 来包含签名 (Signature)信息,表明这个消息已被授权。  

    Authorization 字段计算方法如下:

     "Authorization: OSS " + Access Key Id + ":" + Signature Signature = base64(hmac-sha1(VERB + "\n" + CONTENT-MD5 + "\n" + CONTENT-TYPE + "\n" + DATE + "\n" + CanonicalizedOSSHeaders + CanonicalizedResource)) 

    CONTENT-MD5    //表示请求内容数据的 MD5 值 

    CONTENT-TYPE   //表示请求内容的类型 DATE 表示此次操作的时间,且必须为 HTTP1.1 中支持的 GMT 格式 CanonicalizedOSSHeaders    //表示 http 中的 object meta 组合

    CanonicalizedResource        //表示用户想要访问的 OSS 资源 

     

    验证方法如下:

    >>> import base64,hmac,sha

    >>> base64.encodestring(hmac.new("OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV","PUT\nODBGOERFMDMzQTczRUY3NUE3NzA5QzdFNUYzMDQxNEM=\ntext/html\nThu, 17 Nov 2005 18:49:58 GMT\nx-oss-magic:abracadabra\nx-oss-meta-author:foo@bar.com\n/oss-example/nelson",sha).digest()).strip(), '26NBxoKdsyly4EDv6inkoDft/yA='

    ('26NBxoKdsyly4EDv6inkoDft/yA=', '26NBxoKdsyly4EDv6inkoDft/yA=‘)

    >>> 

     

    首先,在python环境下import base64,hmac,sha 其次,输入签名参数。  

    OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV 这个是key secret,测试过程需要替换成客户的key secret。

    Thu, 17 Nov 2005 18:49:58 GMT 和 /oss-example/nelson 分别是DATE和CanonicalizedResource,这两个是必选项。 

     

    其他参数则视客户签名情况而定。

    注:DATE时间和OSS服务器时间正负不能超过15分钟,否则OSS服务器返回403

     

    最后,26NBxoKdsyly4EDv6inkoDft/yA= 这个是签名最终计算结果,与OSS API 文档计算一致。 

    注:DATE格式必须是http1.1 协议规定的GMT时间格式

     

    可以参考api文档:点击查看



    如问题还未解决,请联系售后技术支持



    2018-05-03 14:11:13
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载