使用openstack.net在Rackspace上对受限用户进行身份验证

时间:2014-02-26 09:38:36

标签: .net openstack rackspace-cloud

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

但我无法使用openstack.net库在我的代码中验证此用户。我尝试与我的主要用户一样,并且我的代码中的身份验证工作正常。但是出于安全考虑,在应用程序中使用主用户API密钥不是一种选择。

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

            var storage = new CloudFilesProvider(identity);

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

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

3 个答案:

答案 0 :(得分:2)

嗯,我遇到了同样的问题,但我提供了用户名,apikey,密码,但它没有用!我发现你应该指定一个区域,以便用户可以访问它。喜欢:

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

        var storage = new CloudFilesProvider(identity);

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

尝试一下,它会起作用。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

var storage = new CloudFilesProvider(identity);

Console.Write(storage.DefaultRegion); // is always null

如果您使用父帐户(即root帐户)执行此操作,则DefaultRegion将被正确设置。

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