认证鉴权
调用接口需通过特殊AK/SK认证或者X-WSSE认证。
推荐使用AK/SK签名认证方式,算法更安全。
特殊AK/SK认证(推荐)
- AK/SK签名认证方式仅支持12MB以内的消息体。
- 特殊AK/SK认证的“特殊”,是相对于一般AK/SK认证而言,AK、SK、EndPoint的获取方式与一般AK/SK认证不同,其他的不变,比如签名算法。
AK/SK认证,即使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。
- AK(Application Key):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。
- SK(Application Secret):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。
- 使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门的签名SDK对请求进行签名。
- 本手册提供Java、Go、Python、C等多种不同语言的签名SDK和调用示例,您可以从签名SDK与demo中选择需要的语言,然后参考示例与API调用说明部分,将SDK集成到您的应用中。
- 签名SDK与demo中,获取AK/SK之处,需要替换为从消息&短信服务Console中获取的Application Key、Application Secret;获取Endpoint/HOST之处,需要替换为APP接入地址;不涉及获取X-Project-Id、X-Domain-Id、Project_Id。
- 签名SDK只提供签名功能,与服务提供的SDK不同,使用时请注意。
X-WSSE认证
短信发送的接口使用X-WSSE认证。 X-WSSE是具有一定格式的字符串,通常是单个 HTTP 标头行。
- PasswordDigest:根据PasswordDigest = Base64 (SHA256 (Nonce + Created + Password))生成,直接使用Nonce、Created、Password拼接后的字符串进行SHA256加密即可,字符串中无需包含+号和空格。其中,Password为app_secret的值。
- Nonce:用户发送请求时生成的一个随机数,长度为1~128位,可包含数字和大小写字母。例如:66C92B11FF8A425FB8D4CCFE0ED9ED1F。
- Created:随机数生成时间。采用标准UTC格式,例如:2018-02-12T15:30:20Z。不同编程语言中的时间格式转换方式不同,部分语言可参考表3。
获取X-WSSE令牌后,在调用短信发送接口时,您需要在请求消息头中按以下方式添加X-WSSE。
POST /sms/batchSendSms/v1 HTTP/1.1 x-real-ip: 10.10.10.10 x-real-port: 10443 host: ompap.inner content-length: 184 date: Fri, 13 Apr 2018 06:31:39 GMT authorization: WSSE realm="SDP",profile="UsernameToken",type="Appkey" x-wsse: UsernameToken Username="ARBRz4bAXoFgEH7o4Ew308eXc1RA",PasswordDigest="NDA1MWIwNjI2ZTkyNWFlM2FhMTE5NDE1YTk5NjU1YWE4NjNlZTY1MmRhYzkxZGViNzczZjdjMjkzZWQ4ZjAwNA==",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z" accept: application/json content-type: application/x-www-form-urlencoded from=1069********0012&to=%2B86155****5678&templateId=abcdefghabcdefghabcdefghabcdefgh&templateParas=%5B%22520520%22%5D&statusCallback=http%3A%2F%2F205%2E145%2E111%2E168%3A9330%2Freport