2017-06-09 2 views
0

J'essaie de mettre à jour un utilisateur à l'aide des services d'annuaire Google, mais une erreur: "400 mot de passe invalide". Voici le code que j'utilise:Mot de passe de mise à jour du service d'annuaire Google 400 Mot de passe invalide

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 = "[email protected]"; 

ServiceAccountCredential credential = new ServiceAccountCredential(sai); 

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

User user = directoryService.Users.Get("[email protected]").Execute(); 
user.Password = "[email protected]"; 
directoryService.Users.Update(user, "[email protected]").Execute(); // Error 400 Invalid password 

La dernière ligne jette l'erreur. Obtenir les utilisateurs existants fonctionne par la manière:

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

Qu'est-ce que je fais mal?

+1

Votre objet 'User' a-t-il un' HashFunction' non vide? Note des docs: "Si hashFunction est spécifié, le mot de passe doit être une clé de hachage valide." –

+0

J'ai négligé cela dans la documentation. Je vais jeter un coup d'oeil lundi prochain. –

+0

Je n'ai pas spécifié de fonction de hachage, mais pour une raison quelconque, cela n'a pas fonctionné. En utilisant SHA1 maintenant et cela fonctionne bien. –

Répondre

0

Avez-vous essayé sans caractères spéciaux afin de tester? Peut-être qu'il y a quelques problèmes concernant l'encodage. Google ne demande qu'un minimum de caractères.

D'autre part, l'API recommande de crypter avec un hachage avant de télécharger.

The user's password value is required when creating a user account. It is optional when updating a user and should only be provided if the user is updating their account password. A password can contain any combination of ASCII characters. A minimum of 8 characters is required. The maximum length is 100 characters. We recommend sending the password property value as a base 16 bit, hexidecimal-encoded hash value. If a hashFunction is specified, the password must be a valid hash key.

The password value is never returned in the API's response body.

+1

En utilisant la fonction de hachage SHA1 maintenant et cela fonctionne, merci. –