在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);
我得到例外情况“用户无权访问所请求的服务或区域”
答案 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调用中手动设置区域。子帐户没有其他解决方法。似乎是一个错误。