Autor Thema: Agent per Javascript/Ajax aufrufen, Authentifizierung?  (Gelesen 12736 mal)

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
« Antwort #20 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  ;)
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
« Antwort #21 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" ;))
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline atbits

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • sei Du selbst die Veränderung, die Du Dir wünschst
    • atBits
Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
« Antwort #22 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
David Schiffer
================================
atBits GmbH & Co. KG - https://atbits.de
im Einsatz: Lotus Domino 8.5, 9, 10

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
« Antwort #23 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, .... ;)
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Agent per Javascript/Ajax aufrufen, Authentifizierung?
« Antwort #24 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.

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