Je suis en train d'essayer d'utiliser Microsoft Graph API pour mettre à jour un autre utilisateur dans Active Directory.
J'ai les autorisations suivantes définies pour l'utilisateur et l'application sur https://apps.dev.microsoft.com/
J'ai demandé les scopes suivants:
- Directory.ReadWrite.All
- User.ReadWrite.All
- Group.ReadWrite.All
Je suis capable de lister tous les utilisateurs dans le répertoire, mais lors de la tentative de mise à jour (dans ce cas, la city
), cela échoue:
GraphServiceClient graphClient = SDKHelper.GetAuthenticatedClient ();
var usersResponse = graphClient.Users.Request ().GetAsync ();
var users = usersResponse.Result;
// user id codé en dur pour le moment
var userId = "9a5b83cd-85ff-4ad1-ab2f-b443941a518e";
var user = users.FirstOrDefault (m => m.Id == userId);
if (user != null) {
user.City = "New York";
await graphClient.Me.Request ().UpdateAsync (user);
}
Je reçois:
{
Code : Authorization_RequestDenied
Message : Insufficient privileges to complete the operation.
Inner error
}
L'utilisateur avec lequel je suis connecté est un administrateur global du répertoire.
J'ai pris le jeton JWT, je me suis rendu sur https://jwt.io et voici les rôles que je vois:
- Directory.Read.All
- Directory.ReadWrite.All
- Files.ReadWrite
- Group.ReadWrite.All
- Mail.Send
- User.Read
- User.Read.All
- User.ReadWrite.All
Est-ce que j'ai besoin d'autres autorisations pour que cela fonctionne ?
En fin de compte, j'aimerais créer une application console (pas une application web) pour mettre à jour les informations d'autres utilisateurs dans le répertoire. Mais j'ai pensé que l'utilisation de cette application exemple fournie par Microsoft est un bon début.