Question

Je dois authentifier PHP auprès d'un serveur Exchange. Une fois capable de me connecter avec succès, il me faudra écrire des requêtes webdav en PHP pour pouvoir extraire des données du serveur Exchange et les utiliser dans une application Web.

Ce serait un peu simple, sauf que le serveur Exchange 2003 a l'authentification basée sur les formulaires (FBA) activée. Avec FBA activé, je suis supposé faire ce que dit l’article de blog ci-dessous (voir lien). Mon problème est que j'ai besoin d'aide pour convertir ses instructions pour ASP en PHP.

http: / /blogs.msdn.com/webdav_101/archive/2008/12/12/webdav-fba-authentication-sample-explained.aspx

Est-ce que quelqu'un comprend les détails de ce qu'il décrit dans cet article? Toute idée serait utile.

Plus d'informations spécifiques si nécessaire: Je ne comprends pas comment configurer la demande POST (je veux dire, lorsque vous postez normalement des données sur un formulaire, ne chargez-vous pas habituellement la page à laquelle vous postez? Dans ses instructions, il dit de le poster à /exchweb/bin/auth/owaauth.dll. Comment ça marche?)

Je suis également confus quant à la façon de procéder à la troisième étape répertoriée: 3) WebReq.KeepAlive et AllowAutoRedirect doivent être définis sur True lors de la demande.

En plus de cela, je pourrais vraiment utiliser une aide détaillant comment prendre les données de publication et les mettre dans un cookie en PHP.

Merci d'avance pour toute aide fournie!

Était-ce utile?

La solution

Je pense que le meilleur moyen de le faire est d’enrouler. ( http://ca.php.net/curl )

Sur la page liée, le premier exemple est une bonne classe à utiliser (je l'ai utilisée pour la connexion automatique à d'autres sites Web)

Il devrait avoir KeepAlive (en-tête) et Redirect activé par défaut ( curl_setopt ($ process, CURLOPT_FOLLOWLOCATION, 1); )

Vous devez vous assurer que le service Web peut créer / modifier cookie.txt, puis essayez:

$cc = new cURL();
$cc->post('http://www.yourexchange.com','destination=https%3A%2F%2F' . $strServerName . '%2Fexchange%2F' . $strUserName . '%2F&username=' . $strDomain . '%5C' . $strUserName . '&password=' . $strPassword . '&SubmitCreds=Log+On&forcedownlevel=0&trusted=0'); 

Ce qui précède est une traduction rapide des informations de la page à laquelle vous avez accédé. Vous devrez peut-être utiliser urlencode () sur vos variables s'il existe des caractères spéciaux. Une fois que ce qui précède fonctionne avec succès, vous pouvez utiliser

$page=$cc->get('http://www.yourexchange.com/?whatever=youneed');

La page $ contiendra le résultat de la chaîne du get (elle envoie le cookie stocké dans le fichier texte sur cette requête). Vous pouvez ensuite utiliser une expression régulière pour obtenir ce dont vous avez besoin.

Cela devrait vous rapprocher de ce dont vous avez besoin.

Autres conseils

Il semble que le fichier texte porte en réalité le nom "cookies.txt". Vous pouvez créer un fichier texte vierge portant ce nom et le télécharger dans le même répertoire. Dans votre client FTP, vous devriez pouvoir définir des autorisations. Je crois que 777 est le code d’autorisation dont vous aurez besoin. Si vous ne pouvez pas simplement entrer le code d'autorisation, cochez toutes les cases pour donner toutes les autorisations.

re: dernier message,

Cela est correct, lorsque le script est exécuté, il s'agit en principe d'un client et le fichier de cookie est un moyen simple de stocker le cookie pour une réutilisation aisée.

Chaîne,

Oui, cela fait référence à un fichier appelé cookies.txt (remarque: "cookies" avec un "s") dans le même dossier que votre fichier de code curlclass.php .

cURL l’utilise pour stocker et envoyer des cookies lors de demandes ultérieures. Vous avez raison de supposer que le serveur Web exécutant le script PHP agit en tant que client; il se connecte au serveur Exchange en simulant un POST sur le formulaire de connexion, puis en enregistrant le cookie et en l'envoyant à chaque demande, comme le ferait un navigateur.

Créez le fichier cookies.txt et définissez les autorisations pour que l'utilisateur qui exécute votre instance Apache puisse écrire dans le fichier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top