45 votes

Autorisation d'accès à Office 365/Sharepoint en ligne

J'écris un service WCF qui est hébergé dans Azure en tant que (PaaS). Ce service doit à son tour communiquer avec Sharepoint 2013 Online/Office 365.

J'envisageais d'utiliser le modèle d'objet Sharepoint Client pour y accéder, mais je continue à obtenir l'erreur suivante : "Le serveur distant a renvoyé une erreur : (403) Forbidden" (Interdit) Lorsque l'on se connecte pour accéder à l'instance SharePoint par le biais d'un navigateur, on arrive généralement à l'adresse suivante https://login.microsoftonline.com/login.srf afin que vous puissiez vous connecter en utilisant un Live Id. Le problème est que nous utilisons un compte fédéré et non un Live Id, et donc nous sommes redirigés vers un site adfs pour nous connecter. J'ai regardé un exemple de code à http://www.wictorwilen.se/Post/How-to-do-active-authentication-to-Office-365-and-SharePoint-Online.aspx qui utilise l'authentification basée sur les revendications, mais cela échoue toujours avec un message "Authentication Failed" (échec de l'authentification) lorsqu'on essaie de récupérer le jeton Saml.

Si je comprends bien. Une façon de procéder est d'obtenir le jeton Saml, de le passer à SPO, qui renverra à son tour deux cookies que je dois inclure dans les demandes faites avec le modèle d'objet client. Le problème est que je ne trouve pas d'exemples appropriés sur la façon de s'authentifier en utilisant le compte fédéré en C#.

Quelqu'un peut-il m'indiquer comment procéder pour autoriser mon service WCF à communiquer avec SharePoint ?

Désolé si cela se trouve dans le mauvais forum. Je ne sais pas exactement s'il s'agit d'un problème lié à Azure ou à SharePoint, car je suis assez novice dans ces deux technologies.

1voto

RimskyDon Points 11

Essayez l'article de blog suivant. La possibilité d'accéder à l'Office 365 API a été annoncé le mois dernier et la possibilité de l'appeler à partir de votre service web est assez récente. Cet article est un bon tutoriel sur le sujet.

0voto

Teyhouse Points 21

Bonjour, juste au cas où nous nous sommes inscrits comme revendeur Office365 il y a quelques jours, j'ai dû apprendre une leçon douloureuse : Le jeton d'authentification que vous obtenez de Sharepoint n'est valide que pour 2 heures ! Peut-être que cela va changer dans Sharepoint 15 qui sait...

J'ai pensé que cela pourrait être une indication précieuse car il n'y a pas de solution de rechange connue...

0voto

James Love Points 934

Avez-vous essayé de prendre l'exemple de code de Wictor et de remplacer l'URL login.srf par votre point de fin de connexion ADFS ?

Gardez fiddler ouvert pendant que vous essayez ceci, et inspectez les demandes/réponses à chaque fois, vous verrez probablement plus de détails sur les raisons pour lesquelles les choses ne fonctionnent pas dans le corps de la réponse que C# cache dans son modèle d'objet.

Consultez également cet article de blog, qui explique comment obtenir le jeton d'authentification de l'ADFS en utilisant n'importe quel outil permettant de créer une enveloppe SOAP :

http://leandrob.com/2012/02/request-a-token-from-adfs-using-ws-trust-from-ios-objective-c-iphone-ipad-Android-java-node-js-or-any-platform-or-language/

0voto

Brian P Points 938

Je sais qu'il s'agit d'un vieux post, mais utiliser SharePoint Online par le biais d'une application sans utiliser une App Principal peut constituer une violation de votre contrat de licence. Vous devez utiliser le véritable OAuth et la classe TokenHelper qui fait partie du SDK pour utiliser le modèle d'application correctement.

0voto

Coolnate Points 11

En utilisant 365, il y a également différents niveaux à considérer. Certaines fonctionnalités ne sont disponibles que si le système 365 est de niveau Entreprise 4.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X