云服务器内容精选

  • 用户签名验证 SFS通过AK/SK对请求进行签名,在向SFS发送请求时,客户端发送的每个消息头需要包含由SK、请求时间、请求类型等信息生成的签名信息。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。格式例如:HCY8BGCN1YM5ZWYOK1MH SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。格式例如:9zYwf1uabSQY0JTnFqbUqG7vcfqYBaTdXde2GUcq 用户可以在 IAM 服务中获取AK和SK,获取的方法请参见获取访问密钥(AK/SK)。 SFS根据应用场景,提供了Header中携带签名的签名计算方式。 以Header中携带签名为例,用户签名验证流程如表1所示。Header中携带签名方法的具体参数说明及代码示例,请参见Header中携带签名。 表1 SFS签名计算和验证步骤 步骤 示例 签名计算 1. 构造HTTP消息 PUT /HTTP/1.1 Host: filesystem.sfs.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. 添加签名头域发送到SFS服务 PUT /object HTTP/1.1 Host: filesystem.sfs.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 / HTTP/1.1 Host: filesystem.sfs.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是否相等 相等:签名验证通过 不相等:签名验证失败 父主题: 认证鉴权
  • 使用Postman调用时,出现 获取Token 失败的情况 获取Token时,请依据报错信息,选择相应的解决方案。 Body体中服务所在区域是否正确, 对应的key值是否正确。 帐密报错The username or password is wrong 返回The userInfo is wrong 请正确填写username和domainname,一般情况下,username=domainname。如不确定,可登录“我的凭证”页面查看,如果使用IAM账号获取Token: username:IAM用户名(子账号名称) domainname:账号名 返回"error_code": "APIGW.0101" 请检查获取Token使用的url是否正确。以获取华北-北京四区域的token为例,采用post请求,url为: https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens 父主题: Token认证鉴权类
  • 原理说明 OBS签名机制的运作流程如图1所示: 图1 OBS API调用的签名和验签机制 表1 OBS API调用的签名和验签机制 执行端 序号 步骤 说明 客户端 1 构造HTTP请求 用户根据自身诉求构建HTTP请求消息,一个完整的API调用请求包含请求URI、请求方法、请求消息头、请求消息体(可选),如何构造API请求详见构造请求。 2 计算签名S 根据构造的HTTP请求和用户访问密钥计算签名S。您可以根据签名携带方式选择一种签名计算方式: Header携带时如何计算签名? URL携带时如何计算签名? 表单携带时的如何计算签名? 3 将签名S添加到请求消息中 将签名添加到请求消息中,消息携带签名的方式有3种: 添加到HTTP请求的Authorization Header头域 添加到URL的Query参数 POST上传(表单上传)情况下,添加到表单 4 发送携带签名S的API调用请求 将携带签名信息的请求发送给服务端。 OBS服务端 5 接收调用请求 接受客户端的调用请求。 6 验证签名 服务端根据接收到的HTTP请求和用户访问密钥再次计算签名S',比较S'与客户端计算的签名S是否一致,如果一致则签名验证成功,不一致则验证失败。 7 返回API调用结果 如果验证成功则继续执行API,然后向客户端返回API执行结果。 如果验证失败则通知客户端验证失败,状态码为403 Forbidden,错误码为SignatureDoesNotMatch。定位和修复签名不匹配行为请参见签名不匹配(SignatureDoesNotMatch)如何处理 客户端 8 接收服务端响应 客户端接收服务端响应。
  • 携带签名的方式 OBS支持3种携带签名的方式,分别是Header携带、URL携带和表单携带。表单携带签名仅适用于POST上传接口。Header和URL携带签名的区别如下表所示: 表2 OBS API调用携带签名 对比项 Header携带签名 URL携带签名 适用场景 一般情况下,推荐您使用在Header中携带签名。 使用在URL中签名的方式,会将授权的数据在过期时间内暴露在互联网上,具有一定的风险。该方式适用于在不提供给第三方访问密钥的情况下,让第三方能用预签发的URL来进行身份认证,并执行预定义操作。 如何您想通过浏览器访问OBS,建议您使用URL携带签名, 是否支持设置Expires 否 是 是否支持设置Date 是 否 常用API 所有API接口 GET、PUT 时间格式 通过Date头域表示请求生成时间,Date必须为RFC 1123格式的GMT时间。 如果Date与当前服务器的时间相差超过15分钟时,则服务端返回403,认为请求已失效。 Expires字段表示临时授权失效的时间,单位:秒。超过该时间后,URL签名失效。 Signature是否需要URL编码 否 是
  • 功能简介 客户端每次调用OBS API时,都需要在HTTP调用请求中携带签名信息,服务端会对收到的签名信息进行验证。签名验证的目的是: 对请求者进行身份验证,防止未授权用户访问。请求携带的签名包含用户相关信息,华为云会对请求者身份进行验证,只有已授权用户的密钥才能通过签名检查,成功调用API。 防止传输数据被篡改。对数据签名并检验,保障传输内容完整性。 防止签名超期后信息被盗用。设置签名有效期,只有在有效期内签名可以使用,超过有效期后签名失效。
  • 升级CodeArts Repo的SSH功能 代码托管服务 SSH功能下线部分不安全的加密算法。 当前KEX (Key Exchange)和MAC(消息验证码)不再支持以下算法。 KEX (Key Exchange)不支持算法如下: diffie-hellman-group18-sha512 diffie-hellman-group-exchange-sha1 diffie-hellman-group-exchange-sha256 MAC(消息验证码)不支持算法如下: hmac-md5 hmac-md5-96 hmac-sha1-etm@openssh.com hmac-sha1-96-etm@openssh.com hmac-md5-etm@openssh.com hmac-md5-96-etm@openssh.com umac-64@openssh.com umac-128@openssh.com 升级您的的代码提交工具至最新版本(如:git bash,eclipse,idea等),新版本默认使用更为安全的算法。 如有疑问请联系技术支持工程师。 父主题: 认证鉴权问题
  • 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": "******" }
  • 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是否为对应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填写是否正确。
  • 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 。