使用 C# 在 RackSpace 中更新密码
Updating a Password in RackSpace using C#
我只是想在 RackSpaceCloud 中使用 C# 更改主帐户和子用户的密码,但我将 运行 保留为 UserNotAuthorized 异常。这很奇怪,因为我可以在没有这个错误的情况下做任何其他事情,重置 Api 键,列出用户和用户 ID(等等)。示例代码
net.openstack.Core.Domain.CloudIdentity cloudIdentity = new CloudIdentity()//Admin Credits
{
Username = "me",
APIKey = "blahblahblah",
};
CloudIdentityProvider cloudIdentityProvider = new CloudIdentityProvider(cloudIdentity);
cloudIdentityProvider.SetUserPassword("correctUserID", "newP@ssw0rd", cloudIdentity);
然后我犯了一个令人困惑的错误,因为像
这样的方法
cloudIdentityProvider.ListUsers(cloudIdentity)
cloudIdentityProvider.ResetApiKey("UserID", cloudIdentity);
工作完美。任何帮助或想法将不胜感激。
哦,顺便说一句,关于异常的附加信息总是相同的。 "Unable to authenticate user and retrieve authorized service endpoints"
这是一个错误。我已经打开 issue 528 但与此同时这里有一个解决方法。
var cloudIdentity = new CloudIdentity
{
Username = "{username}",
APIKey = "{api-key}"
};
var cloudIdentityProvider = new CloudIdentityProvider(cloudIdentity);
var userAccess = cloudIdentityProvider.Authenticate(cloudIdentity);
var request = new HttpRequestMessage(HttpMethod.Post, string.Format("https://identity.api.rackspacecloud.com/v2.0/users/{0}", userAccess.User.Id));
request.Headers.Add("X-Auth-Token", userAccess.Token.Id);
var requestBody = JObject.FromObject(new { user = new { username = userAccess.User.Name } });
((JObject)requestBody["user"]).Add("OS-KSADM:password", "{new-password}");
request.Content = new StringContent(requestBody.ToString(), Encoding.UTF8, "application/json");
using (var client = new HttpClient())
{
var response = client.SendAsync(request).Result;
}
如果需要更改其他用户的密码,使用的云身份必须是管理员,否则非管理员只能更改自己的密码。
我只是想在 RackSpaceCloud 中使用 C# 更改主帐户和子用户的密码,但我将 运行 保留为 UserNotAuthorized 异常。这很奇怪,因为我可以在没有这个错误的情况下做任何其他事情,重置 Api 键,列出用户和用户 ID(等等)。示例代码
net.openstack.Core.Domain.CloudIdentity cloudIdentity = new CloudIdentity()//Admin Credits
{
Username = "me",
APIKey = "blahblahblah",
};
CloudIdentityProvider cloudIdentityProvider = new CloudIdentityProvider(cloudIdentity);
cloudIdentityProvider.SetUserPassword("correctUserID", "newP@ssw0rd", cloudIdentity);
然后我犯了一个令人困惑的错误,因为像
这样的方法cloudIdentityProvider.ListUsers(cloudIdentity)
cloudIdentityProvider.ResetApiKey("UserID", cloudIdentity);
工作完美。任何帮助或想法将不胜感激。 哦,顺便说一句,关于异常的附加信息总是相同的。 "Unable to authenticate user and retrieve authorized service endpoints"
这是一个错误。我已经打开 issue 528 但与此同时这里有一个解决方法。
var cloudIdentity = new CloudIdentity
{
Username = "{username}",
APIKey = "{api-key}"
};
var cloudIdentityProvider = new CloudIdentityProvider(cloudIdentity);
var userAccess = cloudIdentityProvider.Authenticate(cloudIdentity);
var request = new HttpRequestMessage(HttpMethod.Post, string.Format("https://identity.api.rackspacecloud.com/v2.0/users/{0}", userAccess.User.Id));
request.Headers.Add("X-Auth-Token", userAccess.Token.Id);
var requestBody = JObject.FromObject(new { user = new { username = userAccess.User.Name } });
((JObject)requestBody["user"]).Add("OS-KSADM:password", "{new-password}");
request.Content = new StringContent(requestBody.ToString(), Encoding.UTF8, "application/json");
using (var client = new HttpClient())
{
var response = client.SendAsync(request).Result;
}
如果需要更改其他用户的密码,使用的云身份必须是管理员,否则非管理员只能更改自己的密码。