问题描述
我尝试在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个无效的临时网址。
您是否知道为什么或如何对此进行疑难解答?也许我们的服务器上有某种设置可以检查吗?
此致
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)