php - 我的 openstack 临时 URL 一直无效
问题描述
我尝试在 PHP 应用程序中为我的 Openstack ObjectStorage 生成临时 URL。我遵循了他们的文档,但即使他们的 python 示例也不起作用。
到目前为止,这是我的生成器:
class TempUrlGenerator implements ITempUrlGenerator
{
//See https://docs.openstack.org/swift/latest/api/temporary_url_middleware.html for details.
public function generate(string $url, int $validity = 5): string
{
$timestamp = time() + ($validity * 60);
return sprintf(
'%s?temp_url_sig=%s&temp_url_expires=%s',
$url,
$this->generateSignature($url, $timestamp),
$timestamp
);
}
private function generateSignature(string $url, int $timestamp): string
{
$body = sprintf(
'%s\n%s\n%s',
'GET',
$timestamp,
$this->getPath($url)
);
return hash_hmac('sha1', $body, trim(getenv('OPENSTACK_TEMPURL_KEY')));
}
private function getPath(string $url): string
{
$exploded = explode('/v1/', $url);
return sprintf('/v1/%s', $exploded[1]);
}
}
URL 是完整的 URL ( https://myserver.host.com/v1/... ),有效性是我希望保持 URL 有效的分钟数。
除此之外,env 变量是我的密钥。我已经在我的帐户和我的容器上使用 HEAD 调用检查了密钥确实是使用好的标题上传到它们上的。(X-Account-Meta-Temp-URL-Key 和 X-Container-Meta-Temp-URL-Key)。
我还检查了多个示例和实现。
然而,当我尝试它们时,我不断收到 401 invalid temp url。
你知道为什么或如何解决这个问题吗?也许我们的服务器上有某种设置可以检查?
问候,
解决方案
推荐阅读
- reactjs - 重构 ReactJS 组件以删除 getDerivedStateFromProps
- excel - VBA重复字符串布尔函数#NAME错误
- android - 当我从其他活动中删除孩子时,onChildRemoved 一直在打电话
- php - PHP 通过组合现有数组中的元素创建一个新的多维数组
- javascript - 从左上角到右下角对 lat longs 的对象进行排序
- python - 如何将一列设置为熊猫日期框架中的索引
- react-native - 反应原生地图假和模拟位置
- ruby-on-rails - 在 Rails 5.2 中使用 materializeCss 卡片创建复选框
- python - 从 Python 中的大型单个数据集中创建多个直方图,按用户分组
- pdf - 将 eps 转换为 pdf 并裁剪空白