我的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个无效的临时网址。

您是否知道为什么或如何对此进行疑难解答?也许我们的服务器上有某种设置可以检查吗?

此致

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)