A l'aide de l'API Graph et des flux d'authentification/autorisation associés, comment puis-je accéder aux données de tous les utilisateurs d'une organisation? En outre, plusieurs organisations/locataires doivent être en mesure d'utiliser l'application.Comment accéder aux données d'un autre utilisateur via l'API graphique?
À titre d'exemple: j'ai une application qui doit lire les événements de tous les calendriers de tous les utilisateurs sous contoso.onmicrosoft.com. Je voudrais que [email protected], l'administrateur, autorise l'application qui pourra alors lire les données mentionnées. L'utilisation de l'API gérée peut être facilement effectuée via l'emprunt d'identité.
Cependant, je suis en train de faire la même chose avec l'API graphique et OAuth, mais je ne peux pas trouver une solution avant droit, ou je dois manquer quelque chose de très évident. J'ai créé une application via manage.windowsazure.com (multi-locataire) et l'ai configurée pour qu'elle nécessite l'API Microsoft Graph (toutes les autorisations d'application et déléguées).
j'ai fait ce qui suit:
1) Point [email protected] vers https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&redirect_uri=<my redirect url>&client_id=<my client id>
2) Jack autorise l'application
3) Je reviens: <my redirect url>/?code=<my authorization code>&session_state=<blah>
4) J'envoie une demande POST comme ci-dessous:
POST https://login.microsoftonline.com/common/oauth2/token
Headers: content-type: application/x-www-form-urlencoded
Body:
grant_type=authorization_code&code=<my auth code from step above>
&redirect_uri=<my redirect url>
&client_id=<my client id>
&client_secret=<my client secret>
&resource=https%3A%2F%2Fgraph.microsoft.com%2F
5) Quand je fais ce qui suit:
GET https://graph.microsoft.com/v1.0/users/[email protected]/messages
Headers: Authorization: Bearer <auth token from step #4>
je reçois une réponse 200 OK avec les messages.
Quand je fais ce qui suit:
GET https://graph.microsoft.com/v1.0/users/[email protected]/messages
Headers: Authorization: Bearer <auth token from step #4>
Je reçois 403 réponse interdite avec:
{
"error": {
"code": "ErrorAccessDenied",
"innerError": {
"date": "2016-06-07T08:47:27",
"request-id": "5b629e30-e6bd-474d-b3dd-8ce25c5ad1c4"
},
"message": "Access is denied. Check credentials and try again."
}
}
Cela a aidé! Je suis passé à la version App Only (j'ai eu quelques problèmes avec les certificats, mais à la fin ça a fonctionné, sans eux). La clé, ressemble, ajoutait 'prompt = admin_consent', puisque j'ai essayé le flux avant, mais n'a pas fonctionné. J'ai quelques problèmes avec certains appels d'API, mais il y a beaucoup de place pour ça. :) Merci encore! –