Autor Thema: Zugriff auf Domino Server Datenbank mittels PHP  (Gelesen 2625 mal)

Offline Fineas

  • Aktives Mitglied
  • ***
  • Beiträge: 145
  • Geschlecht: Männlich
  • PCLP Dev/Admin 5,6,7,8
Zugriff auf Domino Server Datenbank mittels PHP
« am: 26.11.10 - 11:22:41 »
Hallo Forum Gemeinde,

ich versuche verzweifelt und erfolglos mit folgendem PHP-Code von einem Webserver aus auf eine Datenbank auf einem Domino Server zuzugreifen:

<?php

$opts = array(
   "http"=>array(
   "method"=>"POST",
   "content"=>"username=USER&password=PASS",
   "header"=>"Accept-language: en\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n")
);

$context = stream_context_create($opts);


if (!($fp = fopen("http://dominoserver/test.nsf?Login", "r", false, $context))) {
      die("Could not open login URL");
}

$meta = stream_get_meta_data($fp);

print_r ($meta);

...

Das Problem:

Es funktioniert nicht. Die Datenbank ist geschützt vor anonymen Zugriff und es soll/muss über einen User draufgegangen werden. Verwende ich einen User mit korrekten Login Daten, bekomme ich den Fehler 401 Unauthorized. Verwende ich einen User mit Phantasiedaten, kommt nicht mal eine Fehlermeldung.

Der Domino Server ist vermeintlich korrekt konfiguriert. Diverse Versuche direkt über den Browser mittels Login und angehängtem User/Passwort klappen einwandfrei. Ebenso einwandfrei lassen sich die Daten holen, wenn ich auf der Datenbank anonymen Zugriff erlaube.

Wie kann ich ein funktionierendes Login realisieren???

Jemand eine Idee??? 

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.169
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Zugriff auf Domino Server Datenbank mittels PHP
« Antwort #1 am: 27.11.10 - 08:59:29 »
Hallo,

es gibt 2 Arten von Authentifizierung Bssic-Authentication (über Browserfenster) und Session-Authentication (über eine HTML-Seite)

Zuerst gilt mal zu klären,was bei euch eingesetzt ist.
http://stackoverflow.com/questions/1468507/how-to-set-different-web-authentication-mode-for-different-database-in-lotus-domi

Programmiert hast du "Session-Authentication". Hier bekommst du nach Ausfüllen der Auth-Maske einen Session-Cookie, den du bei jedem weiteren Request übergeben musst.

Der 401 der kommt deutet aber stark auf Basic-Authentication hin, er weist den Browser an, das Passwort-Fenster zu öffnen. Anschließend überträgt der Browser bei jedem Seitenaufruf das Passwort base64-codiert im Header:
http://en.wikipedia.org/wiki/Basic_access_authentication
Probier mal:
Code
$opts = array(
   "http"=>array(
   "method"=>"POST",
   "header"=>"Accept-language: en\r\n"+ 
      "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n" +
      "Authorization: Basic "+ base64_encode("USER:PASS")+"\r\n")
);

Bin mir jetzt nicht 100%ig sicher, aber ich meine Header muss man mit "\n" und nicht mit "\r\n" abtrennen

Gruß
Roland



Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz