gol*_*lem 7 amazon-s3 amazon-web-services pre-signed-url
如果不需要,签名请求的默认到期值是多少?它是否等于X-Amz-Expires参数的最大可能值,即604800(七天)?
文档(参见上面的链接)X-Amz-Expires仅在查询字符串中传递签名参数的上下文中讨论参数.如果X-Amz-Expires需要参数,是否只需要在查询字符串中传递签名参数(而不是使用Authorization标头传递它们)?
更新:
AWS安全流程简介论文,第17页说
请求必须在请求中的时间戳记的15分钟内到达AWS.否则,AWS拒绝该请求.
现在我们在这里谈什么时间戳?我的猜测是X-Amz-Date.如果我是对的,那么另一个问题就出现了:
X-Amz-Date和X-Amz-Expires参数如何相互关联?对我来说,这听起来像请求到期算法从X-Amz-Date时间戳回落到15分钟,如果X-Amz-Expire不存在的话.是
X-Amz-Expires必需的标题/参数?
X-Amz-Expires仅用于查询字符串身份验证,而不是Authorization:标头.
查询字符串身份验证没有默认值.它是必需参数,如果X-Amz-Algorithm=AWS4-HMAC-SHA256查询字符串中存在请求,则服务将拒绝请求,但X-Amz-Expires=...不是.
<Error>
<Code>AuthorizationQueryParametersError</Code>
...
Run Code Online (Sandbox Code Playgroud)
现在我们在这里谈什么时间戳?
这是指X-Amz-Date:与Authorization:标题一起使用时.因为X-Amz-Date:是签名算法输入的一部分,所以日期或时间的更改也会更改签名.在1秒之前或之后签名的其他相同请求具有完全不同的签名.AWS基本上允许您的服务器时钟错误最多15分钟,而不会破坏您对请求进行身份验证的能力.它不是后备或默认.这是一个固定的窗口.
所述X-Amz-Date:的Authorization:基于头的请求是由AWS到他们的系统时间,这当然是同步到UTC的比较,并且请求将被拒绝了,如果手,如果这个值是从UTC偏斜当请求到达超过15分钟.在时间检查之前,没有其他与身份验证相关的验证.
验证查询字符串身份验证到期涉及不同的逻辑:
X-Amz-Expires不得大于604800或小于0; 否则,在没有进一步处理的情况下立即拒绝该请求,包括类似于上述消息的消息.X-Amz-Date根据AWS系统时钟,未来不得超过15分钟.错误是Request is not yet valid.X-Amz-DateX-Amz-Expires相对于AWS系统时钟,过去的秒数不得超过秒数,并且不适用15分钟的容差.错误是Request has expired.如果出现任何这些情况,则不会对签名进行进一步验证,因此这些消息不会根据签名的有效性而更改.首先检查.
此外,您最左边的8个字符X-Amz-Date:必须与标题Credential组件的日期部分匹配Authorization:.对于凭证的差异,日期本身是零容忍的(因此,签名时,不要两次读取系统时间,否则您可能会在UTC午夜左右产生偶尔的无效签名).
最后,请求在处理过程中不会过期.如果您使用签名方法发送请求,该方法在到达时被视为有效但很快就会过期,则始终允许其运行完成 - 例如,大型S3下载或EBS快照创建请求将无法启动,然后无法继续,因为在请求已经在AWS端启动时,到期计时器被触发.如果在请求时授权该操作,则它将继续并正常成功.
| 归档时间: |
|
| 查看次数: |
4948 次 |
| 最近记录: |