Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: schroederk am 20.12.10 - 15:20:03

Titel: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: schroederk am 20.12.10 - 15:20:03
Hallo,

ich würde gerne einen Agenten über einen Webserver aufrufen.
Mittels
Code
https://myserver.com/path/database.nsf?AgentName?OpenAgent&Parameter1&Parameter2
funktioniert das schon ganz gut, aber jetzt würde ich das gerne in ein Ajax-Konstrukt einbauen.

Aber wie übergebe ich jetzt die passenden Authentifizierungsdaten?
Einfach ein Username:Passwort vor dem Servernamen?
Oder ist der Ansatz schon falsch?

Folgendes Script funktioniert leider nicht (der Klick erzeugt weder einen Fehler noch eine Ausgabe)

Code
<HTML>
<HEAD>
<TITLE> Test: Lotus Notes Agent starten </TITLE>

<script type="text/javascript">

function createXMLHttpRequest() {
	var ua;
	if(window.XMLHttpRequest) {
	  try { ua = new XMLHttpRequest(); }
	  catch(e) { ua = false; }
	} else if(window.ActiveXObject) {
	  try { ua = new ActiveXObject('Microsoft.XMLHTTP'); }
	  catch(e) { ua = false; }
	}
	return ua;
}

var req = createXMLHttpRequest();

function notesagent(server,mailbox,agentname,parameter) {
	var req = createXMLHttpRequest();
	req.onreadystatechange = function() {
		switch(req.readyState) {
			case 0:
			case 1:
			case 2:
			case 3: return;
			case 4: break;
		}
		resulttext = req.responseText;
		document.getElementById("test").innerHTML = resulttext;
	}
	req.open('get', 'https://username:passwort@'+server+'/'+mailbox+'/'+agentname+'?OpenAgent&'+parameter);
	req.send(null);
}

</script>

</HEAD>
<BODY>

<input type="button" value="Klick mich" onClick="notesagent('myserver.com','TestAgent','eins&zwei&drei&vier');">

<div id="test"></div>

</BODY>
</HTML>



Titel: Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: atbits am 20.12.10 - 15:28:00
Das hängt meines Wissens nach auch und vor Allem von der Authentifizierungsmethode des Servers ab (Basic-Auth, Session).

Was nutzt ihr?

Grüße David
Titel: Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: atbits am 20.12.10 - 15:34:00
Mittels Dojo
http://docs.dojocampus.org/dojo/xhrGet
Titel: Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: schroederk am 20.12.10 - 16:19:03
Wir verwenden Session Authentication.
Dojo kommt (leider) nicht in Frage, da wird dieses Framework auf dem Webserver nicht einsetzen.
Titel: Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: schroederk am 20.12.10 - 16:29:28
Ich muss mich (leider) korrigieren... es gibt tatsächlich eine Fehlermeldung:

Fehler: uncaught exception: [Exception... "Access to restricted URI denied"  code: "1012" nsresult: "0x805303f4 (NS_ERROR_DOM_BAD_URI)"  location: "http://webserver/test/notesagent.php Line: 41"]

Kann es sein, dass Ajax keine fremden Seiten von einem anderen Server akzeptiert? Oder zumindest die Firefox-Security?
Titel: Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: m3 am 20.12.10 - 16:51:40
Mehrere Punkte:
1) AJAX funktioniert prinzipiell nur, wenn der Request zur gleichen Internetdomain geschickt wird, von der auch die initiale Seite geladen wurde. Ansonsten würde man sehr schnell in ein Cross Site Scripting Problem laufen.
Siehe Link von abits:
Zitat
dojo.xhrGet (and other functions in the same line: dojo.xhrPost, dojo.xhrDelete, dojo.xhrPut), are bound by the 'same domain' security policy of the browser. This means that they can only establish a connection back to the same server that served the HTML page. If you wish to use this API to talk to servers other than the one that originated your page, then you will have to use a proxy on your originating server and have it forward the requests. The only other solution to working around the same domain restriction is to use alternate IO methods, such as dojo.io.script.

2) AJAX unterstützt keine Domino Sesson authentication. Ihr müsst daher

a) den Domino-Server mit der initialen Seite auch in die Domain hängen und dann domainweites SSO aktivieren - dann sollte der Aufruf kein Problem sein.

b) - sollte die initiale Seite nicht von einem Domino Server kommen oder SSO keine Option sein  - eine "Override Session Authentication (http://www-01.ibm.com/support/docview.wss?uid=swg21250004)" Web Rule einrichten, um die Authentication für den Agent Aufruf auf Basic umzudrehen.
Aber ACHTUNG: Auch wenn Du den Request über eine SSL-Verbdindung schickst, stehen Usernamen/Passwort in der initialen Seite im Klartext drinnen - Zugangssicherung ist das keine mehr, da kannst Du den Agent gleich für Anonymous frei schalten.
Titel: Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: pram am 20.12.10 - 18:27:40
Hallo,
Zitat
1) AJAX funktioniert prinzipiell nur, wenn der Request zur gleichen Internetdomain geschickt wird, von der auch die initiale Seite geladen wurde. Ansonsten würde man sehr schnell in ein Cross Site Scripting Problem laufen.
Das ist prinzipiell richtig, man kann aber durch Ändern der Response-HTTP-Header (wenn man es kann und darf) auf andere Domains zugreifen, siehe hier:
http://www.w3.org/TR/access-control/
bzw. nach "ajax cross origin" googlen

zu 2b
Zitat
Aber ACHTUNG: Auch wenn Du den Request über eine SSL-Verbdindung schickst, stehen Usernamen/Passwort in der initialen Seite im Klartext drinnen - Zugangssicherung ist das keine mehr, da kannst Du den Agent gleich für Anonymous frei schalten.
Diese wäreaber nur auf dem PC des Absenders sichtbar und ist deshalb auch nicht von anderen sichtbar. Natürlich darf man das Passwort nicht im Quelltext ausliefern, sondern müsste (*) aus den HTTP-Headern der gerade geöffneten Seite den "Authorization" Header auslesen und beim nächsten XHR-Request übergeben. Der Browser macht das halt automatisch, wenn die URL's auf gleicher Domain liegen.
*) da ich auswendig nicht weiß wie man an diese Header ran kommt und ich bei google einige Beiträge gelesen habe, dass man in einem XHR-Request bei manchen Browsern den "Authorization" Header nicht ändern kann ist dies wohl nicht der richtige Weg.

ach ja und http(s)://username:passwort@... ist nicht standardisiert und funktioniert nur bis IE6 und bei Firefox kommt eine Warnung.

Fazit: dir bleibt nur SSO oder der Agent läuft auf ohne Authentifizierung.

Gruß
Roland
Titel: Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: schroederk am 21.12.10 - 06:52:24
Wenn ich den Agenten ohne Authentifizierung laufen lassen würde,
habe ich dennoch die Möglichkeit auszulesen, wer den Aufruf gemacht hat?
Die IP-Adresse würde schon reichen, da ja nur der Webserver dürfte und diese IP fix ist.
Titel: Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: schroederk am 21.12.10 - 08:57:49
Wie stelle ich denn die Sicherheit um, damit der Agent auch unter Anonymous läuft?
Ich habe unter den Einstellungen des Agenten unter Sicherheit das Häkchen bei "Als Webbenutzer ausführen",
beim Vorgabezugriff nur Anonymous angehakt und ebenfalls "Benutzer mit öffentl. Zugriff dürfen Agenten ausführen"

Dennoch wird beim Aufruf des Agenten im Browser das Authentifizierungsfenster angezeigt.

Ich versuche im Moment die Seite mittels cUrl vom Domino zu bekommen.
Ich bin mir recht sicher, dass darüber auch eine Authentifizierung möglich wäre, wenn die richtigen Parameter noch gesetzt werden (die ich bisher noch nicht gefunden habe)

Code
function open_https_url($url,$refer,$usecookie) {
    if ($usecookie) {
        if (file_exists($usecookie)) {
            if (!is_writable($usecookie)) {
                return "Error: Can't write to $usecookie cookie file, create an empty cookie.txt file in same folder as script";
            }
        } else {
            $usecookie = "cookie.txt";
            if (!is_writable($usecookie)) {
                return "Error: Can't write to $usecookie cookie file, create an empty cookie.txt file in same folder as script";
            }
        }
    }
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
	curl_setopt($ch, CURL_HTTP_VERSION_1_1, true); 
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
    if ($usecookie) {
        curl_setopt($ch, CURLOPT_COOKIEJAR, $usecookie);
        curl_setopt($ch, CURLOPT_COOKIEFILE, $usecookie);   
    }
    if ($refer != "") {
        curl_setopt($ch, CURLOPT_REFERER, $refer );
    }
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
	$result = curl_exec ($ch);
	$info = curl_getinfo($ch);
	if ($result === false || $info['http_code'] != 200) {
		$result = "Error: No cURL data returned for $url [". $info['http_code']. "]";
		if (curl_error($ch)) {
			$result .= "\n". curl_error($ch);
		}
	}
	curl_close ($ch);
	return $result;
}

$dateiurl = "https://myserver.com/mtester.nsf/TestAgent?OpenAgent&test1&test2&test3";

$datei = open_https_url($dateiurl,"",true);

print $datei;
Titel: Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: pram am 21.12.10 - 09:40:26
Wie gesagt du müsstest den Autorization Header setzen:

http://stackoverflow.com/questions/1304974/set-authorization-header-using-php-and-curl

Autorization header ist normalerweise "Basic " + base64(User+":"+Passwort)

http://en.wikipedia.org/wiki/Basic_access_authentication

Zitat
Wenn ich den Agenten ohne Authentifizierung laufen lassen würde,
habe ich dennoch die Möglichkeit auszulesen, wer den Aufruf gemacht hat?

Du musst auf der Javascript-Seite irgendwie den Usernamen ermitteln und dann beim Request übergeben, dafür könntest du dir eine HTML-Page (oder JS-Page) am Domino machen mit Durchgangshtml:
<script>
var user = "<computed value auf @username>"
</script>
und diese einbetten oder per <script src=...> laden

Gruß
Roland
Gruß
Roland

Titel: Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: schroederk am 21.12.10 - 10:52:16
folgender Source-Code liefert als Ergebnis immer: "Error: No cURL data returned for..."
Unabhängig davon ob ich korrekte Zugangsdaten verwende oder nicht:

Code
	$ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);

	curl_setopt ($ch, CURLOPT_HTTPAUTH, "CURL_AUTH_BASIC");
	curl_setopt ($ch, CURLOPT_USERPWD, $credentials);
	curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt ($ch, CURLOPT_SSLVERSION, 3);

	$headers = array(
				"POST ".$page." HTTP/1.0",
				"Accept: text/html",
				"Cache-Control: no-cache",
				"Pragma: no-cache",
				"Authorization: Basic " . base64_encode($credentials)
			); 

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
	curl_setopt($ch, CURL_HTTP_VERSION_1_1, true); 
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
    if ($usecookie) {
        curl_setopt($ch, CURLOPT_COOKIEJAR, $usecookie);
        curl_setopt($ch, CURLOPT_COOKIEFILE, $usecookie);   
    }
    if ($refer != "") {
        curl_setopt($ch, CURLOPT_REFERER, $refer );
    }
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
	$result = curl_exec ($ch);

Wenn ich diesen Code verwende, dann erhalte ich überhaupt kein Ergebnis. Auch unabhängig davon, ob ich korrekte Credentials verwende oder nicht.

Code
$headers = array(
	"POST ".$page." HTTP/1.0",
	"Accept: text/html",
	"Cache-Control: no-cache",
	"Pragma: no-cache",
	"Authorization: Basic " . base64_encode($credentials)
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_USERAGENT, $defined_vars['HTTP_USER_AGENT']);

$data = curl_exec($ch); 


Wenn ich per Javascript den Benutzer (oder die IP) ermittle, hab ich ja nicht wirklich gewonnen, da ein anonymer Aufruf über der Browser dann ja auch möglich ist und mein Javascript dann gar nicht ausgeführt wird.
Gibts mit Lotusscript Boardmitteln keine Möglichkeit die IP-Adresse des Clients herauszufinden?
Titel: Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: pram am 21.12.10 - 12:40:27
Zitat
Gibts mit Lotusscript Boardmitteln keine Möglichkeit die IP-Adresse des Clients herauszufinden?
Doch das ginge in dem du das Feld REMOTE_ADDR aus dem Context-Doc ausliest (achtung Feld muss in einer Maske als "computed for display" existieren, sonst kann man es im webQueryOpen-Agent nicht auslesen)
Das bringt dir aber nichts, sobald ein Proxy/NAT/Loadbalacer/Terminalserver/... eingesetzt wird. IP-basierte Authentifizierung halte ich jedenfalls für problematisch.

Erklär evtl mal etwas genauer was du machen willst, insb. auf welchem Server Domino/PHP läuft und von wo nach wo zugegriffen werden soll und wo welche Authentifizierung läuft.

Zitat
Wenn ich diesen Code verwende....
Schau doch mal ob du mit deinem Code prinzipiell Daten holen kannst, z.B. in dem du einfach mal eine URL eingibst die keine Authentifizierung erfordert (z.B. von http://www.google.de).
Da der Code am PHP-Server ausgeführt wird, kann es auch sein, dass diese keinen Zugriff auf den Zielserver (Stichwort Firewall/Proxy/DNS-Auflösung) hat

Gruß
Roland
Titel: Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: atbits am 21.12.10 - 12:42:38
Wieso denn nun auf einmal Php?
Ich dachte wir bewegen uns im Domino-Umfeld?
Titel: Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: pram am 21.12.10 - 12:48:12
er postet doch oben PHP-Code (zumindest das cURL-Zeug sieht ganz nach PHP aus), drum bin ich ja so verwirrt  ??? ;D
Titel: Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: umi am 21.12.10 - 13:16:48
Ich würde mal den Haken bei  "Als Webbenutzer ausführen" entfernen.
was für Rechte hat den der User Anonymous ?

evtl. hilft Dir auch das weiter:
http://www.codestore.net/store.nsf/unid/BLOG-20081010?OpenDocument (http://www.codestore.net/store.nsf/unid/BLOG-20081010?OpenDocument)
Titel: Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: m3 am 21.12.10 - 13:49:31
Wenn ich den Agenten ohne Authentifizierung laufen lassen würde,
habe ich dennoch die Möglichkeit auszulesen, wer den Aufruf gemacht hat?
Die IP-Adresse würde schon reichen, da ja nur der Webserver dürfte und diese IP fix ist.
Oh, eine IP-Adresse ist leicht zu fälschen ...
Titel: Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: schroederk am 21.12.10 - 13:53:20
Wieso denn nun auf einmal Php?
Ich dachte wir bewegen uns im Domino-Umfeld?

Naja, gepostet hab ich hier, weil ich mit speziellen Anforderungen für das Ausführen eines Lotus Notes-Agenten gerechnet hat.
Aber mir ist klar, dass es Notes quasi nur tangiert und überwiegend PHP ist.

Doch das ginge in dem du das Feld REMOTE_ADDR aus dem Context-Doc ausliest (achtung Feld muss in einer Maske als "computed for display" existieren, welche Authentifizierung läuft.

Der Designer hat mir dieses Feld nicht vorgeschlagen, aber ich das klingt nach einem guten Ansatz.

Das Ganze soll im internen Netz laufen, alle Clients haben feste IPs, vorallem der interne Webserver (reiner Apache, PHP).
Und wenn ich seitens des Agenten sicherstellen kann, dass der Aufruf eben von diesem internen Webserver stattfindet, dann wäre das gelöst.

Hintergrund ist der, dass ich derzeit recht umfangreich die COM-Schnittstelle nutze, diese aber aus welchen Gründen auch immer häufig Performance-Probleme zeigt und sogar den Apache auf dem Webserver zum Absturz bringt.
Daher wollte ich einige spezielle zeitintensive Aufgaben von einem Agenten übernehmen lassen.
Alternativer Ansatz wäre mit einer Art Queue zu arbeiten in der Aufgaben gepuffert und abgearbeitet werden, aber damit fehlt der synchrone Ablauf und zeitnahe korrekte Rückmeldungen.


Titel: Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: m3 am 21.12.10 - 13:56:30
OK, Du hast eine HTML-Seite mit JS, die mit PHP aufgebaut wird. Aus dieser Seite heraus willst Du einen Notes-Webagent aufrufen.

Hast Du schon mal mitgensift (Firebug, Fiddler), ob das, was Du da so zusammenbastelst, auch korrekt übermittelt wird?
Titel: Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: atbits am 21.12.10 - 13:56:50
Nur nochmal für mich zum Verständnis des Szenarios.
Du willst mit einem PhP-Script einen Lotus Domino WebAgent per Ajax callen?

Titel: Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: atbits am 21.12.10 - 13:58:56
Ist Dir eigentlich klar was wo ausgeführt wird?
Weil Wenn Php das Html-Frontend generiert, dann fängst Du mit dem genannten Feld im Designer gar nix an - Du hast ja gar keine Maske - oder doch?
Titel: Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: schroederk am 21.12.10 - 14:03:41
Nur nochmal für mich zum Verständnis des Szenarios.
Du willst mit einem PhP-Script einen Lotus Domino WebAgent per Ajax callen?

Das war der ursprüngliche Plan, den ich dann verworfen habe, da Ajax von Hause aus nicht den Zugriff auf eine fremde Domain unterstützt.
Was aber eigentlich Blödsinn ist, da ich jetzt über Ajax eine PHP-Seite aufrufe, die dann einen einfachen
Code
$data = file_get_contents($url)
macht.
Ich hatte geglaubt, dass ich dem Anonymous Berechtigung auf den Agenten geben könnte ohne auf die DB selber. Da die DB aber als Inhalt nur den Agenten enthalten wird, ists auch nicht soo tragisch.
Ich bin mir zwar sicher, dass es auch mittels cUrl irgendwie gehen würde, aber so nehme ich jetzt die Strasse mit weniger Steinen.

Letztlich funktioniert es jetzt. Nicht ganz so, wie geplant, aber ich bin heute mal ergebnisorientiert  ;)
Titel: Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: m3 am 21.12.10 - 14:06:23
Das Ganze soll im internen Netz laufen, alle Clients haben feste IPs, vorallem der interne Webserver (reiner Apache, PHP).
Und wenn ich seitens des Agenten sicherstellen kann, dass der Aufruf eben von diesem internen Webserver stattfindet, dann wäre das gelöst.
Wie gesagt, eine IP-Adresse ist kein Sicherheitsmerkmal. Auch nicht in einem "internen" Netz.

Zitat
Hintergrund ist der, dass ich derzeit recht umfangreich die COM-Schnittstelle nutze, diese aber aus welchen Gründen auch immer häufig Performance-Probleme zeigt und sogar den Apache auf dem Webserver zum Absturz bringt.
Daher wollte ich einige spezielle zeitintensive Aufgaben von einem Agenten übernehmen lassen.
Alternativer Ansatz wäre mit einer Art Queue zu arbeiten in der Aufgaben gepuffert und abgearbeitet werden, aber damit fehlt der synchrone Ablauf und zeitnahe korrekte Rückmeldungen.
Solange Du bei der synchronen Ausführung bleibst (beachte, dass Notes Agents a) auch Ausführungszeitlimits haben und b) Du angeben solltest, wie viele Webagents gleichzeitig laufen durfen (packt der Code mehrere Agents gleichzeitig)) verlagerst Du das Problem nur vom Apache auf den Domino, ohne das tatsächliche Problem zu beheben.


Wenn Du zeitintensive Aufgaben hast, auf die Du nicht warten kannst/willst, wäre es besser, diese im Batch, bespielsweise durch eine MesseQueue Lösung, ausführen zu lasen. Dafür musst Du halt Deine Anwendung umdesignen

@atbits: Es geht ihm darum, im Domino Agent zu "überprüfen", von welcher IP der Agent aufgerufen wurde. Und das steht im angesprochenen CGI "Feld".

@schroederk: Du hast den Aufruf also jetz tvom Client in den Server verschoben, um den AJAX-Limitationen zu entgehen, korrekt? (Und nein, die Limitation in AJAX ist kein "Blödsinn" ;))
Titel: Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: atbits am 21.12.10 - 14:14:02
@m3: Ja klar, 2 - 3 Postings weiter oben war nur die Rede davon dass Feld im Designer zuzufügen ...
Zitat
Doch das ginge in dem du das Feld REMOTE_ADDR aus dem Context-Doc ausliest (achtung Feld muss in einer Maske als "computed for display" existieren, sonst kann man es im webQueryOpen-Agent nicht auslesen
... das hat mich verwirrt  ;)

Ich denke ein anderer Ansatz beim Design der Applikation wäre evtl. sinnvoller.

Z.B. über Webservices zu gehen und Domino als Webservice Provider einzusetzen und PhP als Consumer.
Dann braucht man nicht noch die AJAX Zwischenstufe.
Und man könnte evtl. über ein Caching nachdenken ... aber das hängt von der App ab.

Grüße David
Titel: Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: m3 am 21.12.10 - 14:19:14
Ajax hat er eh schon abgehakt.
Und ein Webservice rettet ihn auch nicht, da auch das Synchron ist. Und wenn er Tasks mit langer laufzeit hat, .... ;)
Titel: Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
Beitrag von: pram am 21.12.10 - 14:24:38
Ahh jetzt verstehe ich langsam:

- Auf Apache Mit IP1 läuft PHP welches dir eine Seite generiert
- du willst einen Notes-Agenten per URL auf Server IP2 aufrufen
- auf dem Server ist Basic Authentication aktiviert

Zitat
Das war der ursprüngliche Plan, den ich dann verworfen habe, da Ajax von Hause aus nicht den Zugriff auf eine fremde Domain unterstützt.
Wie oben gesagt, im Prinzip richtig, aber: https://developer.mozilla.org/En/HTTP_Access_Control
Sofern du Firefox 3.5 hast (zum Testen hier: http://arunranga.com/examples/access-control/simpleXSInvocation.html) könntest du in deinem Notes-Agenten auf IP2 die header entsprechend setzen. Dies ginge so
Code
print "Content-Type: application/x-javascript"
print "Access-Control-Allow-Origin: http://IP1"
print ""
print .... json-data oder was auch immer

Andernfalls braucht man einen PHP-Proxy o.ä. wie du schon geschrieben hast.

Es gäbe aber noch eine weitere Möglichkeit:
du könntest am Apache über "mod_proxy" den Dominoserver in ein virtuelles Verzeichnis legen:

dann kannst du mit http://IP1/dominoproxy/myDb.nsf/myAgent?openAgent den Agenten auf http://IP2/myDb.nsf/myAgent?openAgent öffnen.
Vorteil: Für Ajax/Browser sieht das aus als läuft alles auf dem selben Server und es werden auch alle Header etc übertragen. d.H. es könnte sogar die Authentifizierung klappen.

Gruß
Roland

p.S. Firebug+Co. ist dann Pflicht um das vernünftig debuggen zu können.