0

Je suis un peu confuse sur la façon d'obtenir un jeton porteur qui fonctionnera pour un site SharePoint ainsi que pour l'API graphique. Nous utilisons MFA (authentification multi-facteurs) afin que nous recevions un message texte lorsque l'utilisateur essaie de se connecter. Tout cela fonctionne et nous obtenons un jeton de retour, mais la ressource que je pointe est https://srmukdev.sharepoint.com/, comment pouvons-nous utiliser ce jeton pour accéder à l'API https://graph.microsoft.com/.Azure Active Directory API Sharepoint & Graph

Pour le moment cela ne fonctionne pas. Je peux faire des demandes de connexion séparées, mais nous ne voulons pas faire cela car c'est nécessaire pour accéder aux deux parties avec le même jeton. existe-t-il une méthode qui peut traduire un jeton en un autre? quelque chose qui fonctionne au moins?

Vous pouvez voir la différence actuelle est le ResourceUrl

Les détails sharepoint api J'utilise

<add key="ida:AADInstance" value="https://login.microsoftonline.com/{0}" /> 
<add key="ida:Tenant" value="srmukdev.onmicrosoft.com" /> 
<add key="ida:ApplicationId" value="000000-0000-0000-0000-0000000" /> 
<add key="ida:RedirectUri" value="http://someuri/" /> 
<add key="ida.ResourceUrl" value="https://srmukdev.sharepoint.com/" /> 

Les détails graphique api J'utilise

<add key="ida:AADInstance" value="https://login.microsoftonline.com/{0}" /> 
<add key="ida:Tenant" value="srmukdev.onmicrosoft.com" /> 
<add key="ida:ApplicationId" value="000000-0000-0000-0000-0000000" /> 
<add key="ida:RedirectUri" value="http://someuri/" /> 
<add key="ida.ResourceUrl" value="https://graph.microsoft.com/" /> 

Un grand merci

Répondre

2

Entre Nous commencez par dire que vous ne pouvez pas obtenir un jeton qui fonctionnera à la fois t Il API Microsoft Graph et l'API SharePoint directement. Les jetons sont créés avec des audiences spécifiques et, dans le cadre de la validation des jetons par l'API Web, ils vérifient que l'audience du jeton correspond à leur identifiant unique.

Je pense qu'une solution possible consiste à réaliser que le jeton Microsoft Graph vous donne déjà accès à l'API SharePoint. Voir le documentation here. Vous devriez être en mesure d'obtenir un jeton uniquement pour Microsoft Graph, puis utiliser les points de terminaison spécifiques Microsoft Graph pour obtenir des données de votre SharePoint. C'est l'un des problèmes que Microsoft Graph essaie de résoudre. Un seul point de terminaison et jeton pour accéder à toutes vos données Microsoft.

Une autre solution consiste à utiliser le code d'autorisation que vous recevez pour demander deux jetons aux deux extrémités différentes. Selon les bibliothèques que vous utilisez et le flux spécifique que vous suivez, cela peut être plus difficile que de ne pas l'accomplir, mais en général, le authorization code grant flow est utilisé pour se connecter à un utilisateur. Une fois que l'utilisateur est redirigé vers la page de connexion Microsoft et qu'il se connecte ensuite avec succès, votre service reçoit un code d'autorisation, qu'il échange ensuite pour un jeton d'accès à l'aide du point de terminaison de jeton. Ce code d'autorisation peut être utilisé pour obtenir un jeton d'accès pour toute ressource que le client a été configuré pour appeler, vous pouvez donc appeler le point de terminaison de jeton deux fois, avec deux valeurs resource différentes, et récupérer deux jetons d'accès. Je fais cela dans un de mes Python/Flask samples. Enfin, en supposant que vous ayez récupéré un jeton d'accès et un jeton d'actualisation pour une ressource particulière, vous pouvez utiliser le jeton d'actualisation pour obtenir un jeton pour une autre ressource pour laquelle l'application a été autorisée. Le jeton d'actualisation émis par Azure AD peut être utilisé pour accéder à plusieurs ressources

Par exemple, si vous disposez d'une application client disposant de l'autorisation pour appeler deux API Web, le jeton d'actualisation peut également être utilisé pour obtenir un jeton d'accès à l'autre API Web .

Voir here pour voir comment procéder.