Google目录服务更新密码400密码无效

时间:2017-06-09 15:02:34

标签: c# .net google-directory-api gsuite

我正在尝试使用Google Directory服务更新用户,但收到错误:“400无效密码”。这是我使用的代码:

var certificate = new X509Certificate2(certificatePath, "notasecret", 

X509KeyStorageFlags.Exportable);
var sai = new ServiceAccountCredential.Initializer(clientId)
{
    Scopes = new[]
                        {
                            DirectoryService.Scope.AdminDirectoryUser,
                            DirectoryService.Scope.AdminDirectoryDomain
                        }
}.FromCertificate(certificate);
sai.User = "admin@domain.com";

ServiceAccountCredential credential = new ServiceAccountCredential(sai);

var directoryService = new DirectoryService(new BaseClientService.Initializer
                                            {
                                                ApplicationName = "Admin",
                                                HttpClientInitializer = credential
                                            });

User user = directoryService.Users.Get("someuser@domain.com").Execute();
user.Password = "SomeP@ssword1234";
directoryService.Users.Update(user, "someuser@2contact.com").Execute(); // Error 400 Invalid password

最后一行抛出错误。 让现有用户继续工作:

var listRequest = _directoryService.Users.List();
listRequest.Domain = "domain.com";
listRequest.MaxResults = 500;
var results = listRequest.Execute(); // Works fine!

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您是否尝试过没有特殊字符才能进行测试?也许编码有一些问题。 Google仅请求至少字符。

另一方面,API建议在上传前使用哈希进行加密。

  

创建用户帐户时需要用户的密码值。更新用户时是可选的,只有在用户更新其帐户密码时才应提供。   密码可以包含ASCII字符的任意组合。至少需要8个字符。最大长度为100个字符。   我们建议将密码属性值作为基数16位,十六进制编码的散列值发送。如果指定了hashFunction,则密码必须是有效的散列密钥。

     

密码值永远不会在API的响应正文中返回。