php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 05-10-2007, 10:59
cholin
 Newbie
Links : Onlinestatus : cholin ist offline
Registriert seit: Oct 2007
Beiträge: 2
cholin ist zur Zeit noch ein unbeschriebenes Blatt
Standard Sharepoint-Listen Zugriff

Guten Morgen.

Ich muss einen Migrator von Listen eines Sharepoint Portal Server (Microsoft) zu einer Wiki erstellen.
Was sich Anfangs als 0815-Parser anhört stellt sich als deutlich schwerer als ich dachte.
Ich habe leider keinen Zugriff auf die MsSQL-Datenbank und muss so andere Wege gehen.
Im Forum fand ich dazu nur 1 Topic und dieser war leider unbeantwortet bzw. hat das Thema auch nicht wirklich getroffen. Aber ich habe dem Threadersteller mal eine PM geschrieben.

Meine erste Idee war folgende:

- Auf Server zugreifen, Quelltext speichern und per Regex die gewünschten Informationen herauszubekommen. Doch dies entpuppte sich als schwerer Weg, da die Authentifizierung bei dem Portal Server via NTLM funktioniert.
Mit Hilfe einiger Website (1, 2 (pear),3) konnte ich am Ende zwar NTLM verstehen aber mit PHP anwenden war nicht so einfach.
Letztendlich konnte ich es in Java hinkriegen und musste feststellen, dass die gewollten Informationen per Javascript in die Website eingeführt werden und so hatte ich nun zwar Zugriff auf den gewollten Quelltext bloß ohne wirklichen Inhalt.


- Durch Zufall stoß ich dann auf die Webdienste vom Portal-Server ([Servername]/_vti_bin/Lists.asmx). Diesen spricht man per einfache SOAP-Anfrage an.

Microsoft gibt folgendes Beispiel an:
Code:
 POST /_vti_bin/Lists.asmx HTTP/1.1
Host: Servername
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://schemas.microsoft.com/sharepoint/soap/GetList"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetList xmlns="http://schemas.microsoft.com/sharepoint/soap/">
      <listName>string</listName>
    </GetList>
  </soap:Body>
</soap:Envelope>

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetListResponse xmlns="http://schemas.microsoft.com/sharepoint/soap/">
      <GetListResult>
        <xsd:schema>schema</xsd:schema>xml</GetListResult>
    </GetListResponse>
  </soap:Body>
</soap:Envelope>
Problematisch dabei ist, dass man sicher wieder per NTLM authentifizieren muss und hier bin ich auch stecken geblieben. Im Internet findet man zu diesem Thema nur VB.Net- oder C#-Skripte, die dies mit Hilfe von "System.Net.CredentialCache.DefaultCredentials" lösen. (Beispielskript, msdn: Sichere Datenübertragung mit XML Web Services)
Aber wie ich das per PHP lösen könnte ist unauffindbar. Die Benutzerdaten weiß ich und möchte sie eigtl. nur in die SOAP-Anfrage mitgeben (Header oder sonst was)

Mein MiniBeispiel-Code:
PHP-Code:
<?php
$client 
= new SoapClient('http://Servername/_vti_bin/Lists.asmx?WSDL');

$credentials = array('username'=>'username','password'=>'passwort');

$auth = new SoapVar($credentialsSOAP_ENC_OBJECT);

$res $client->GetListCollection();

var_dump($res); 

?>
Gibt diese Fehlermeldung aus, da ich mich nicht authentifizieren kann bzw. es falsch anwende:
Code:
Fatal error: Uncaught SoapFault exception: [HTTP] Unauthorized in
C:\Programme\xampp\htdocs\test.php:9 Stack trace: #0 [internal 
function]: SoapClient->__doRequest('<?xml version="...', 
'http://servername...', 'http://schemas....', 1, 0) #1 [internal function]: SoapClient->__call('GetListCollecti...', Array) #2 
C:\Programme\xampp\htdocs\test.php(9): SoapClient->GetListCollection() #3 {main} thrown in 
C:\Programme\xampp\htdocs\test.php on line 9
Hat jemand eventuell nen Rat?

nico



----
Daten:
PHP Version 5.2.3 (Testumgebung)
PHP Version 5.2.1 (späterer Server)



Geändert von cholin (05-10-2007 um 11:42 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 05-10-2007, 12:31
gloogle
 Newbie
Links : Onlinestatus : gloogle ist offline
Registriert seit: Oct 2007
Beiträge: 4
gloogle ist zur Zeit noch ein unbeschriebenes Blatt
Standard

genau!
Mit Zitat antworten
  #3 (permalink)  
Alt 05-10-2007, 13:00
cholin
 Newbie
Links : Onlinestatus : cholin ist offline
Registriert seit: Oct 2007
Beiträge: 2
cholin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich entnehme mal aus dem Post, dass keiner irgendwas verstanden hat.

Also ich möchte die Webdienste des SharePoint-Portal Servers (Microsoft) nutzen.
Genauer gesagt möchte ich per SOAP-Anfrage an die Daten der Listen kommen.
Das einzige was ich dazu von Microsoft finden konnte war eine Dokumentation zur Sichere Datenübertragung mit XML Web Services und eine Beispiel SOAP-Anfrage, welche folgende ist:
Code:
    POST /_vti_bin/Lists.asmx HTTP/1.1
    Host: Servername
    Content-Type: text/xml; charset=utf-8
    Content-Length: length
    SOAPAction: "http://schemas.microsoft.com/sharepoint/soap/GetList"

    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body>
        <GetList xmlns="http://schemas.microsoft.com/sharepoint/soap/">
          <listName>string</listName>
        </GetList>
      </soap:Body>
    </soap:Envelope>

    HTTP/1.1 200 OK
    Content-Type: text/xml; charset=utf-8
    Content-Length: length

    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body>
        <GetListResponse xmlns="http://schemas.microsoft.com/sharepoint/soap/">
          <GetListResult>
            <xsd:schema>schema</xsd:schema>xml</GetListResult>
        </GetListResponse>
      </soap:Body>
    </soap:Envelope>
Doch scheitern jegliche Versuche eine SOAP-Anfrage zu schicken daran, dass man an der Authentifizierung scheitert.
Im Internet findet man dazu nur Skripte in VB.NET oder C#. (Beispiel)
Diese greifen auf das windowsintegrierte Authentifizierungszeugs per "System.Net.CredentialCache.DefaultCredentials" zurück und können sich so erfolgreich einloggen.

Nun ist die Frage, wie ich mich in PHP, per SOAP-Header zum Beispiel (falls der Server das unterstützt), einloggen könnte, wenn ich die Benutzerdaten habe.
Da ich wenig Informationen darüber finde, bin ich bisschen ratlos wie man das handhaben sollte.

Ein anderer Weg wäre per Javascript. (Querying a SharePoint list with javascript)

Nun wollte ich halt davor aber nochmal nachfragen, ob nicht jmd mit dem SharePoint-Portal Server Erfahrung hat und mir eventuell sagen könnte wie ich vorgehen sollte.

Geändert von cholin (05-10-2007 um 13:02 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 12-10-2007, 10:05
Patrick_PQ
 Registrierter Benutzer
Links : Onlinestatus : Patrick_PQ ist offline
Registriert seit: Aug 2003
Beiträge: 480
Patrick_PQ ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo cholin,

ich habe mein Problem mittlerweile gelöst und erstelle gerade eine Beschreibung die mir als Dokumentation dienen soll und die ich auch als Tutorial hier veröfentlichen wollte ... brauche aber noch etwas Zeit dafür.

Hier das wichtigste in Kürze:

PHP SOPA unterstützt keine NTLM Authentifizierung, daher musst du den Sharepoint auf Basisauthetifizierung umstellen. Nun kann per SOAP ein Benutzer angemeldet werden. Die Einstellungen sind in der Zentraladministration vom Sharepoint vorzunehmen.

Danach sind einfache Anfragen wie GetList kein Problem mehr. Etwas schwieriger sind Anfragen die einen Parameter vom Typ schema erwarten. Hier habe ich per DOM die entsprechende Ausgabe erzeugt und als HTML ausgegeben.

Bisher habe ich Daten mit einem Kalender ausgetauscht. Aus einer Webanwendung mit PHP schreibe ich Einträge in der Sharepoint Kalender und lasse mir die ID für die Webanwendung zurückgeben. Wenn in der Web Anwendung jetzt der Eintrag gelöscht wird, kann ich auch per SOAP der Eintrag im Sharepoint Kalender löschen - klappt wunderbar.

Ich hoffe, du kommst damit weiter.

Gruß
Patrick
Mit Zitat antworten
  #5 (permalink)  
Alt 20-06-2009, 18:46
pKurmannCH
 Registrierter Benutzer
Links : Onlinestatus : pKurmannCH ist offline
Registriert seit: Jun 2009
Beiträge: 1
pKurmannCH befindet sich auf einem aufstrebenden Ast
Standard SharePoint-Zugriff

Befasse mich ebenfalls mit dem Thema und erhalte dauernd die Fehlermeldung

Code:
Uncaught SoapFault exception: [HTTP] Unauthorized
Wie habt ihr die NTLM-Authentifizierung hinbekommen?
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:28 Uhr.