Domanda

Devo avere PHP autenticato su un server Exchange. Una volta in grado di connettersi con successo ad esso, dovrò scrivere le richieste di webdav nel PHP in modo da poter estrarre i dati dal server di scambio e usarli in un'applicazione web.

Sarebbe piuttosto semplice, tranne per il fatto che il server Exchange 2003 ha attivato l'autenticazione basata su moduli (FBA). Con l'FBA attivato credo che suppongo di fare ciò che dice l'articolo del blog qui sotto (vedi link). Il mio problema è che ho bisogno di aiuto per convertire le sue istruzioni per ASP in PHP.

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

Qualcuno capisce i dettagli di ciò che sta descrivendo in questo articolo? Qualsiasi approfondimento sarebbe d'aiuto.

Informazioni più specifiche se necessario: sono confuso su come configurare la richiesta POST (intendo, quando normalmente pubblichi i dati POST in un modulo, di solito non carichi la pagina in cui stai postando? Nelle sue istruzioni lui dice di postarlo su /exchweb/bin/auth/owaauth.dll. Come funziona?)

Sono anche confuso su come eseguire il terzo passaggio elencato: 3) WebReq.KeepAlive e AllowAutoRedirect dovrebbero essere impostati su True sulla richiesta.

Inoltre, potrei davvero usare un po 'di aiuto nel dettaglio come prendere i dati dei post e inserirli in un cookie in PHP.

Grazie in anticipo per qualsiasi aiuto fornito!

È stato utile?

Soluzione

Credo che il modo migliore per farlo sia attraverso l'arricciatura. ( http://ca.php.net/curl )

Nella pagina collegata, il primo esempio è una buona classe da usare (l'ho usato per accedere automaticamente ad altri siti Web)

Dovrebbe avere KeepAlive (header) e Redirect attivi per impostazione predefinita ( curl_setopt ($ process, CURLOPT_FOLLOWLOCATION, 1); )

Dovrai assicurarti che il servizio web possa creare / modificare cookie.txt, quindi prova:

$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'); 

Quanto sopra è una traduzione rapida dalle informazioni sulla pagina a cui ti sei collegato, potrebbe essere necessario utilizzare urlencode () sulle tue variabili se ci sono caratteri speciali. Una volta che quanto sopra funziona correttamente puoi usare

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

La pagina $ conterrà il risultato della stringa da get (invia il cookie memorizzato nel file di testo su questa richiesta) quindi puoi usare l'espressione regolare per ottenere ciò di cui hai bisogno.

Questo dovrebbe avvicinarti molto a ciò di cui hai bisogno.

Altri suggerimenti

Sembra che il file di testo sia effettivamente chiamato " cookies.txt " ;. È possibile creare un file di testo vuoto con questo nome e caricarlo nella stessa directory. Nel tuo client ftp dovresti essere in grado di impostare le autorizzazioni, credo che 777 sia il codice di autorizzazione di cui avrai bisogno. Se non riesci a inserire il codice di autorizzazione, prova a selezionare tutte le caselle per fornire tutte le autorizzazioni.

re: ultimo post,

questo è corretto, dove lo script è in pratica un client e il file cookie è un modo semplice per memorizzare il cookie per un facile riutilizzo.

Catena,

Sì, si riferisce a un file chiamato cookies.txt (nota: " cookies " con un " s ") nella stessa cartella del file di codice curlclass.php .

cURL lo utilizza per archiviare e inviare cookie su richieste successive. Hai ragione nel ritenere che il web server che esegue lo script PHP agisca come client; fondamentalmente, sta effettuando l'accesso al server Exchange simulando un POST nel modulo di accesso, quindi salvando il cookie e inviandolo con ogni richiesta, proprio come farebbe un browser.

Crea il file cookies.txt e imposta le autorizzazioni in modo che l'utente che sta eseguendo la tua istanza Apache possa scrivere sul file.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top