IncompleteSignature-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

IncompleteSignature

spring_w 2017-03-03 11:48:04 2146

String signature = new HmacSHA1Signature().computeSignature("xxx&", encryptText);
仔细对比了参数字典顺序,感觉都没什么问题,但是一直就是IncompleteSignature,签名也是用阿里sdk里面的

开发工具
分享到
取消 提交回答
全部回答(1)
  • 毕来生
    2019-07-17 20:51:56

    户调用MNS HTTP API发送请求时,需要在Authorization header里带上签名值,当签名值和服务器端计算的不一致时,请求会被拒绝,服务器返回403 SignatureDoesNotMatch。
    当遇到这种问题,请检查以下几项:

    一,请求url是否正确
    举ReceiveMessage(curl)为例:
    curl -X GET http://44404.mns.cn-beijing.aliyuncs.com/queues/queue1/messages?waitseconds=10 -H "Authorization:MNS ijljkhkhlkjklshiojo................." -H "Date:Mon, 09 Nov 2015 06:24:41 GMT" -H "x-mns-version:2015-06-06"

    新协议(x-mns-version:2015-06-06, Authorization:MNS xxxxxxxx...)url为:
    http://$AccountID.mns.cn-beijing.aliyuncs.com/queues/$queueName/messages
    旧协议(x-mqs-version:2014-07-08, Authorization:MQS xxxxxxxx...)url为:
    http://$AccountID.mns.cn-beijing.aliyuncs.com/$queueName/messages

    关于新旧协议更多差异,请参考官方API文档:
    https://docs.aliyun.com/?spm=5176.7400025.9.11.uXUeIQ#/pub/mns/api_reference/api_spec&message_operation

    队列地址中的AccountID即云账户的账号ID。
    账号id.jpg

    二,AccessKeyId和AccessKeySecrete是否正确

    三,加密信息源是否正确

    下面给出两种常见的错误信息源例子。

    错误一:
    GET
    n
    text/xml;charset=utf-8
    Date:Thu, 21 May 2015 03:50:03 GMT
    x-mqs-version:2014-07-08
    /queue1/messages?waitseconds=10

    正确一:
    GET
    n
    text/xml;charset=utf-8
    Thu, 21 May 2015 03:50:03 GMT
    x-mqs-version:2014-07-08
    /queue1/messages?waitseconds=10

    解决方法:去掉“Date:”。

    错误二:
    GET
    n
    text/xml;charset=utf-8
    Thu, 21 May 2015 03:50:03 GMT
    x-mns-version:2015-06-06
    /queue1/messages?waitseconds=10

    正确二:
    GET
    n
    text/xml;charset=utf-8
    Thu, 21 May 2015 03:50:03 GMT
    x-mns-version:2015-06-06
    /queues/queue1/messages?waitseconds=10

    解决方法:如果使用新协议,请使用新协议支持的请求格式。

    错误三:
    GET
    n
    text/xml;charset=utf-8
    Thu, 21 May 2015 03:58:23 GMT
    n
    /queues/queue1/messages?waitseconds=10

    正确三:
    GET
    n
    text/xml;charset=utf-8
    Thu, 21 May 2015 03:58:23 GMT
    /queues/queue1/messages?waitseconds=10

    解决方法:如果没有以x-mns-开头的head,直接置为空,没有n。

    关于Signature计算方法,请参考官方文档:
    https://docs.aliyun.com/?spm=5176.7400025.9.11.uXUeIQ#/pub/mns/api_reference/invoke&signature

    官网提供了一个demo, 方便用户验证自己的签名过程是否正确,请见问题“为什么我的签名总是没算对?”:
    https://docs.aliyun.com/?spm=5176.7400025.9.11.uXUeIQ#/pub/mns/product-manual/FAQ

    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题