云服务器内容精选
-
请求和Policy示例 下面的几张表提供了一些请求和Policy的例子。 示例1:在examplebucket桶中上传testfile.txt对象,并且设置对象ACL为公共可读。 请求 policy POST / HTTP/1.1 Host: examplebucket.obs.cn-north-4.myhuaweicloud.com Content-Type: multipart/form-data; boundary=7e32233530b26 Content-Length: 1250 --7e32233530b26 Content-Disposition: form-data; name="key" testfile.txt --7e32233530b26 Content-Disposition: form-data; name="x-obs-acl" public-read --7e32233530b26 Content-Disposition: form-data; name="content-type" text/plain --7e32233530b26 Content-Disposition: form-data; name="AccessKeyId" UDSIAMSTUBTEST000002 --7e32233530b26 Content-Disposition: form-data; name="policy" ewogICJleHBpcmF0aW9uIjogIjIwMTktMDctMDFUMTI6MDA6MDAuMDAwWiIsCiAgImNvbmRpdGlvbnMiOiBbCiAgICB7ImJ1Y2tldCI6ICJleGFtcGxlYnVja2V0IiB9LAogICAgWyJlcSIsICIka2V5IiwgInRlc3RmaWxlLnR4dCJdLAoJeyJ4LW9icy1hY2wiOiAicHVibGljLXJlYWQiIH0sCiAgICBbImVxIiwgIiRDb250ZW50LVR5cGUiLCAidGV4dC9wbGFpbiJdLAogICAgWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsIDYsIDEwXQogIF0KfQo= --7e32233530b26 Content-Disposition: form-data; name="signature" xxl7bZs/5FgtBUggOdQ88DPZUo0= --7e32233530b26 Content-Disposition: form-data; name="file"; filename="E:\TEST_FILE\TEST.txt" Content-Type: text/plain 123456 --7e32233530b26 Content-Disposition: form-data; name="submit" Upload --7e32233530b26-- { "expiration": "2019-07-01T12:00:00.000Z", "conditions": [ {"bucket": "examplebucket" }, ["eq", "$key", "testfile.txt"], {"x-obs-acl": "public-read" }, ["eq", "$Content-Type", "text/plain"] ] } 示例2:在examplebucket桶中上传file/obj1对象,并且设置对象的四个自定义元数据。 请求 policy POST / HTTP/1.1 Host: examplebucket.obs.cn-north-4.myhuaweicloud.com Content-Type: multipart/form-data; boundary=7e329d630b26 Content-Length: 1597 --7e3542930b26 Content-Disposition: form-data; name="key" file/obj1 --7e3542930b26 Content-Disposition: form-data; name="AccessKeyId" UDSIAMSTUBTEST000002 --7e3542930b26 Content-Disposition: form-data; name="policy" ewogICJleHBpcmF0aW9uIjogIjIwMTktMDctMDFUMTI6MDA6MDAuMDAwWiIsCiAgImNvbmRpdGlvbnMiOiBbCiAgICB7ImJ1Y2tldCI6ICJleGFtcGxlYnVja2V0IiB9LAogICAgWyJzdGFydHMtd2l0aCIsICIka2V5IiwgImZpbGUvIl0sCiAgICB7Ingtb2JzLW1ldGEtdGVzdDEiOiJ2YWx1ZTEifSwKICAgIFsiZXEiLCAiJHgtb2JzLW1ldGEtdGVzdDIiLCAidmFsdWUyIl0sCiAgICBbInN0YXJ0cy13aXRoIiwgIiR4LW9icy1tZXRhLXRlc3QzIiwgImRvYyJdLAogICAgWyJzdGFydHMtd2l0aCIsICIkeC1vYnMtbWV0YS10ZXN0NCIsICIiXQogIF0KfQo= --7e3542930b26 Content-Disposition: form-data; name="signature" HTId8hcaisn6FfdWKqSJP9RN4Oo= --7e3542930b26 Content-Disposition: form-data; name="x-obs-meta-test1" value1 --7e3542930b26 Content-Disposition: form-data; name="x-obs-meta-test2" value2 --7e3542930b26 Content-Disposition: form-data; name="x-obs-meta-test3" doc123 --7e3542930b26 Content-Disposition: form-data; name="x-obs-meta-test4" my --7e3542930b26 Content-Disposition: form-data; name="file"; filename="E:\TEST_FILE\TEST.txt" Content-Type: text/plain 123456 --7e3542930b26 Content-Disposition: form-data; name="submit" Upload --7e3542930b26-- { "expiration": "2019-07-01T12:00:00.000Z", "conditions": [ {"bucket": "examplebucket" }, ["starts-with", "$key", "file/"], {"x-obs-meta-test1":"value1"}, ["eq", "$x-obs-meta-test2", "value2"], ["starts-with", "$x-obs-meta-test3", "doc"], ["starts-with", "$x-obs-meta-test4", ""] ] }
-
Conditions Conditions是一个用于验证本次请求合法的一种机制,可以使用这些条件限制请求中必须包含的内容。实例中的条件要求请求的桶名必须是book,对象名必须以user/为前缀,对象的acl必须是公共可读。除了AccessKeyId、signature、file、policy、token、field names以及前缀为x-ignore-外的表单中的所有项,都需要包含在policy中。下表是conditions中应该包含的项: 表1 policy中应该包含的条件元素 元素名称 描述 x-obs-acl 请求中的ACL。 支持精确匹配和starts-with条件匹配。 content-length-range 设置上传对象的最大最小长度,支持range匹配。 Cache-Control, Content-Type, Content-Disposition, Content-Encoding, Expires REST请求特定头域。 支持精确匹配和starts-with条件匹配。 key 上传对象的名字。 支持精确匹配和starts-with条件匹配。 bucket 请求桶名。 支持精确匹配。 success_action_redirect 上传对象成功后重定向的URL地址。具体描述请参见5.4.2-POST上传。 支持精确匹配和starts-with条件匹配。 success_action_status 如果未指定success_action_redirect,则成功上传时返回给客户端的状态码。具体描述请参见5.4.2-POST上传。 支持精确匹配。 x-obs-meta-* 用户自定义元数据。 元素中的关键字不允许含有非ASCII码或不可识别字符,如果一定要使用非ASCII码或不可识别字符,需要客户端自行做编解码处理,可以采用URL编码或者Base64编码,服务端不会做解码处理。 支持精确匹配和starts-with条件匹配。 x-obs-* 其他以x-obs-为前缀的头域。 支持精确匹配和starts-with条件匹配。 x-obs-security-token 请求消息头中字段名。 临时AK/SK和securitytoken鉴权必加字段名。 Policy条件匹配的方式如下: 表2 policy条件匹配方式 条件 描述 Exact Matches 默认是完全匹配,post表单中该项的值必须和policy的conditions中设置的值完全一样。例如:上传对象的同时设置对象ACL为public-read,表单中x-obs-acl元素的值为public-read,policy中的conditions可以设置为 {"x-obs-acl": "public-read" }或者[ "eq", "$x-obs-acl", "public-read"],这两者是等效的。 Starts With 如果使用该条件,则post表单中对应元素的值必须是固定字符串开始。例如:上传对象名以user/为前缀,表单中key元素的值可以是user/test1、user/test2,policy的conditions中该条件如下: ["starts-with", "$key", "user/"] Matching Any Content post表单中对应元素的值可以是任意值。例如:请求成功后重定向的地址可以是任意地址,表单中success_action_redirect元素的值可以是任意值,policy的conditions中该条件如下: ["starts-with", "$success_action_redirect", ""] Specifying Ranges post表单中file元素文件的内容长度可以是一个指定的范围,只用于限制对象大小。例如上传对象大小为1-10MB,表单中file元素的内容长度可以是1048576-10485760,policy的conditions中该条件如下,注意值没有双引号: ["content-length-range", 1048576, 10485760] policy使用json格式,conditions可以支持 { } 和 [ ] 两种方式,{ }中包含表单元素的key和value两项,以冒号分隔;[ ]中包含条件类型、key、value三项,以逗号分隔,元素key之前使用$字符表示变量。 Policy中必须转义的字符如下: 表3 policy中必须转义的字符 转义后的字符 真实字符 \\ 反斜杠(\) \$ 美元符号($) \b 退格 \f 换页 \n 换行 \r 回车 \t 水平制表 \v 垂直制表 \uxxxx 所有Unicode字符
-
Token认证 Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得操作API的权限。 Token可通过调用获取用户Token接口获取,调用本服务API需要project级别的Token,即调用获取用户Token接口时,请求body中auth.scope的取值需要选择project,如下所示。 username、domainname 的获取请参考获取账号名和账号ID。password为用户密码。 { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "xxxxxxxx" } } } } Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。 GES服务必须通过project的方式来获取token,不支持scope为domain的方式。 获取Token后,再调用其他接口时,您需要在请求消息头中添加“X-Auth-Token”,其值即为Token。例如Token值为“ABCDEFJ....”,则调用接口时将“X-Auth-Token: ABCDEFJ....”加到请求消息头即可,如下所示。 GET https://iam.cn-north-1.myhuaweicloud.com/v3/auth/projects Content-Type: application/json X-Auth-Token: ABCDEFJ.... 您还可以通过这个视频教程了解如何使用Token认证:https://bbs.huaweicloud.com/videos/101333 。
-
为什么成功获取Token还会返回401状态码 成功获取Token还会返回401状态码,有两种情况: 使用Token方式调用OCR服务返回401状态码,表示Token已经过期。Token的有效期为24小时,建议重新获取Token调用OCR服务。 您的IAM账号的账号名与主账号的账号名一致,为了保证您的资产安全,限制了该账号下的token不可用。建议您新建一个IAM账号(不同名)授权后再进行相关操作。 父主题: Token认证鉴权类
-
Java中Content-MD5的计算方法示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 import java.security.MessageDigest; import sun.misc.BASE64Encoder; import java.io.UnsupportedEncodingException; import java.security.NoSuchAlgorithmException; public class Md5{ public static void main(String[] args) { try { String exampleString = "blog"; MessageDigest messageDigest = MessageDigest.getInstance("MD5"); BASE64Encoder encoder = new BASE64Encoder(); String contentMd5 = encoder.encode(messageDigest.digest(exampleString.getBytes("utf-8"))); System.out.println("Content-MD5:" + contentMd5); } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) { e.printStackTrace(); } } }
-
用户签名验证 OBS通过AK/SK对请求进行签名,在向OBS发送请求时,客户端发送的每个消息头需要包含由SK、请求时间、请求类型等信息生成的签名信息。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。 用户可以在IAM服务中获取AK和SK,获取的方法请参见获取访问密钥(AK/SK)。 OBS根据应用场景,提供了Header中携带签名、URL中携带签名和基于浏览器上传的表单中携带签名3种签名计算方式。 OBS提供的SDK已集成了签名计算,建议您使用SDK进行开发。 以Header中携带签名为例,用户签名验证流程如表1所示。Header中携带签名方法的具体参数说明及代码示例,请参见Header中携带签名。 表1 OBS签名计算和验证步骤 步骤 示例 签名计算 1. 构造HTTP消息 PUT /object HTTP/1.1 Host: bucket.obs.cn-north-4.myhuaweicloud.com Date: Tue, 04 Jun 2019 06:54:59 GMT Content-Type: text/plain Content-Length: 5913 2. 按照签名规则计算StringToSign StringToSign = HTTP-Verb + "\n" + Content-MD5 + "\n" + Content-Type + "\n" + Date + "\n" + CanonicalizedHeaders + CanonicalizedResource 3. 准备AK和SK AK: ****** SK: ****** 4. 计算签名Signature Signature = Base64( HMAC-SHA1( SecretAccessKeyID, UTF-8-Encoding-Of( StringToSign ) ) ) 5. 添加签名头域发送到OBS服务 PUT /object HTTP/1.1 Host: bucket.obs.cn-north-4.myhuaweicloud.com Date: Tue, 04 Jun 2019 06:54:59 GMT Content-Type: text/plain Content-Length: 5913 Authorization: OBS AccessKeyID:Signature 签名验证 6. 接收HTTP消息 PUT /object HTTP/1.1 Host: bucket.obs.cn-north-4.myhuaweicloud.com Date: Tue, 04 Jun 2019 06:54:59 GMT Content-Type: text/plain Content-Length: 5913 Authorization: OBS AccessKeyID:Signature 7. 根据请求中的AK获取SK 从头域Authorization中取出AK,去IAM取回用户的SK 8. 按照签名规则计算StringToSign StringToSign = HTTP-Verb + "\n" + Content-MD5 + "\n" + Content-Type + "\n" + Date + "\n" + CanonicalizedHeaders + CanonicalizedResource 9. 计算签名Signature Signature = Base64( HMAC-SHA1( SecretAccessKeyID, UTF-8-Encoding-Of( StringToSign ) ) ) 10. 验证签名 验证头域Authorization中的Signature与服务端计算的Signature是否相等 相等:签名验证通过 不相等:签名验证失败 父主题: 认证鉴权
-
Incorrect IAM authentication information: decrypt token fail { "error_msg": "Incorrect IAM authentication information: decrypt token fail", "error_code": "APIG.0301", "request_id": "******"} 可能原因 用户的API所属IAM认证,TOKEN解析失败。 解决办法 检查获取token的方法,token是否正确。 检查获取token的环境与调用的环境是否一致。
-
Incorrect IAM authentication information: Get secretKey failed {"error_msg": "Incorrect IAM authentication information: Get secretKey failed,ak:******,err:ak not exist","error_code": "APIG.0301","request_id": "******"} 可能原因 用户的API所属IAM认证,使用AK/SK签名方式访问,但是AK不存在。 解决方法 检查AK填写是否正确。
-
Incorrect IAM authentication information: verify aksk signature fail { "error_msg": "Incorrect IAM authentication information: verify aksk signature fail, ...... "error_code": "APIG.0301", "request_id": "******" }
-
Incorrect IAM authentication information: AK access failed to reach the limit,forbidden { "error_msg": "Incorrect IAM authentication information: AK access failed to reach the limit,forbidden." ...... "error_code": "APIG.0301", "request_id": "******" }
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格