Je souhaite que mon application serveur interagisse avec ses propres fichiers Excel en utilisant Microsoft Graph. C'est-à-dire que les fichiers appartiennent à l'application, et non à un utilisateur particulier de l'application.
J'ai enregistré une application avec Azure ID et j'ai accordé l'autorisation "Accès complet à tous les fichiers auxquels l'utilisateur peut accéder" pour Microsoft Graph.
J'essaie d'utiliser OAuth Resource Owner Password Credentials Grant.
Je peux obtenir un jeton d'autorisation comme suit :
POST https://login.microsoftonline.com/common/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=password
&resource=https://graph.microsoft.com
&client_id=<ID of application registered with Azure AD>
&username=<Microsoft username>
&password=<password>&scope=Files.ReadWrite.All
Mais la réponse n'indique que le champ d'application User.Read
:
{
"token_type": "Bearer",
"scope": "User.Read",
"expires_in": "3600",
"ext_expires_in": "0",
"expires_on": "1494467388",
"not_before": "1494463488",
"resource": "https://graph.microsoft.com",
"access_token": "eyJ0e...",
"refresh_token": "AQAB..."
}
Et lorsque j'essaie de lister les fichiers dans le One Drive du compte, je n'obtiens pas d'erreur, mais la réponse ne contient aucun élément :
Request:
GET https://graph.microsoft.com/v1.0/me/drive/root/children
Authorization: bearer eyJ0e...
Response:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('<account ID>')/drive/root/children",
"value": []
}
Lorsque je fais la même demande dans Graph Explorer en étant connecté avec le même compte, la réponse inclut tous les éléments du disque unique Root de ce compte.
Je comprends que Microsoft Graph ne prend pas actuellement en charge l'accès aux fichiers par l'application seule, lorsqu'il est autorisé via OAuth Client Credentials Grant (selon les instructions pour appeler Microsoft Graph dans un service ), mais comme j'obtiens l'autorisation pour un compte d'utilisateur particulier (et pas seulement pour une application), je m'attendrais à avoir accès aux fichiers de cet utilisateur.
Est-ce que je me trompe, ou est-ce que l'accès aux fichiers n'est pas non plus pris en charge par l'octroi d'informations d'identification par mot de passe du propriétaire des ressources ?
Dans ce dernier cas, comment puis-je permettre à mon application d'utiliser les informations d'identification de l'utilisateur pour manipuler des fichiers Excel via Microsoft Graph sans interaction avec l'utilisateur ?
UPDATE :
J'ai attribué des autorisations d'administrateur au compte que j'utilise et j'ai redéfini les autorisations d'application pour Microsoft Graph dans le portail Azure, mais cela ne fonctionne toujours pas pour moi.
Voici les détails du compte que j'utilise :