Montag, 8. März 2010

File Upload in einer Flash RIA


Während bei Flash-basierten RIAs die Funktionsaufrufe per AMF an das Backend gesendet werden, ist man für File Uploads auf den klassischen HTTP POST Request angewiesen. Problematisch wird das ganze nun, wenn man Sessionsdaten dieser beiden Kommunitationskanäle (siehe Abbildung) koppeln möchte, beispielsweise, um die hochgeladene Datei dem per AMF-Request angemeldeten Benutzer zuordnen zu können.

Zwei Varianten, um diese Brücke zu schlagen, möchte ich im folgenden vorstellen.

I. User ID Transfer
Bei dieser Variante wird die ID des angemeldeten Benutzers symmetrisch in einem Token verschlüsselt und über das Flash-Frontend zwischen den Endpunkten der beiden Kanäle ausgetauscht. Dabei sind die folgenden Schritte notwendig.
  1. Die Flash-Applikation fragt über einen AMF-Funktionsaufruf ein Token vom Backend an. Dieses ist mit einem Shared Secret symmetrisch verschlüsselt und beinhaltet das Ausstellungsdatum zur Gültigkeitsprüfung sowie die ID des Benutzers der Session.
  2. Das Token wird nun zusammen mit der ausgewählten Datei per http POST an den Upload Service des Backend gesendet. Dort kann nun der Token entschlüsselt und die hochgeladene Datei mit dem Benutzer verknüpft werden.
II. File ID Transfer
In dieser Alternative beinhaltet der Upload Service keinerlei Businesslogik, sondern stellt lediglich eine Referenz auf die hochgeladene Datei bereit. Hierbei sind die folgenden drei Schritte erforderlich.
  1. Ähnlich wie bei der ersten Variante wird ein symmetrisch verschlüsseltes Token vom BL Service erfragt. Dieses beinhaltet jedoch nur das Ausstellungsdatum zur Begrenzung der Gültigkeitsdauer.
  2. Dieses Token wird ebenfalls zusammen mit der Datei an dem Upload Service geschickt. In der Antwort erhält die Flash-Applikation eine ID, mit Hilfe der die Business Logik die hochgeladene Datei referenzieren kann.
  3. Abschließend überreicht das Frontend über einen AMF-Aufruf diese ID an die Businesslogik.


Keine Kommentare:

Kommentar veröffentlichen