使用openstack.net对Rackspace上受限用户到云文件进行身份验证

使用openstack.net对Rackspace上受限用户到云文件进行身份验证,.net,openstack,rackspace-cloud,.net,Openstack,Rackspace Cloud,在Rackspace云管理门户上,我创建了一个只能访问云文件服务的用户,当我使用该用户登录门户时,一切正常。该帐户只能按预期访问“文件”选项卡。我可以从UI创建/查看/删除文件 但我无法使用openstack.net库在代码中对该用户进行身份验证。我对我的主要用户进行了同样的尝试,验证在我的代码中运行良好。但出于安全考虑,在应用程序中使用主用户API密钥不是一个选项 var identity = new CloudIdentity()

在Rackspace云管理门户上,我创建了一个只能访问云文件服务的用户,当我使用该用户登录门户时,一切正常。该帐户只能按预期访问“文件”选项卡。我可以从UI创建/查看/删除文件

但我无法使用openstack.net库在代码中对该用户进行身份验证。我对我的主要用户进行了同样的尝试,验证在我的代码中运行良好。但出于安全考虑,在应用程序中使用主用户API密钥不是一个选项

            var identity =
            new CloudIdentity()
            {
                Username = "username",
                APIKey = "apikey",
            };

            var storage = new CloudFilesProvider(identity);

            storage.CreateObject("sitefiles", inputStream, fileName);

我得到了例外情况“用户无权访问请求的服务或区域”

根据我今天的观察,用户名+API密钥身份验证似乎不适用于通过用户管理功能创建的用户。但是,对于那些用户,您可以使用用户名+密码身份验证API访问云文件之类的功能。

好吧,我也遇到了同样的问题,但是我提供了用户名、apikey和密码,但它不起作用!。我发现您应该指定一个区域,以便用户可以访问它。比如:

        var identity =
        new CloudIdentity()
        {
            Username = "username",
            APIKey = "apikey",
        };

        var storage = new CloudFilesProvider(identity);

        storage.CreateObject("sitefiles", inputStream, fileName, region: "LON");

尝试一下,它就会起作用。

通过UI创建的用户(即子帐户)似乎没有通过其身份在
CloudFileProvider上设置正确的
DefaultRegion
。如果你要用上面穆罕默德的例子:

var identity =
new CloudIdentity()
{
    Username = "username",
    APIKey = "apikey",
};

var storage = new CloudFilesProvider(identity);

Console.Write(storage.DefaultRegion); // is always null
如果要使用父帐户(即根帐户)执行此操作,则将正确设置
DefaultRegion


正如Mohamed指出的,您只能在API调用中手动设置区域。对于子帐户,没有其他解决方法。这似乎是一个bug。

今天遇到了相同的问题,但在没有指定区域的情况下,它在早些时候运行良好。奇怪的是,我在Rackspace上找不到任何更改日志。