Domino 9 und frühere Versionen > ND8: Entwicklung

Agent per Javascript/Ajax aufrufen, Authentifizierung?

<< < (5/5)

schroederk:

--- Zitat 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?

--- Ende 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.
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)
--- Ende Code ---
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  ;)

m3:

--- Zitat von: schroederk am 21.12.10 - 13:53:20 ---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.
--- Ende Zitat ---
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.
--- Ende Zitat ---
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" ;))

atbits:
@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
--- Ende Zitat ---
... 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

m3:
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, .... ;)

pram:
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.

--- Ende Zitat ---
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

--- Ende Code ---

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.

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln