P.AIR, die Software zur Verwaltung von Passwörtern

Wer kennt das nicht, man will sich irgendwo einloggen hat aber mal wieder das Passwort vergessen? Sei es der Email Account für Spam-Mails der nicht regelmäßig genutzt wird, Zugangsdaten für XING, MySpace, den eigenen Blog oder auch die wichtigen Daten für Onlinebanking. Um all diese Passwörter zu organisieren und sicher zu speichern wurde die AIR Anwendung P.AIR entwickelt.

Screenshot P.AIR

P.AIR ist eine Datenbank, die es ermöglicht, Passwörter strukturiert und sicher zu speichern. Die gespeicherten Passwörter können jederzeit mit wenigen Klicks abgerufen werden. P.AIR wurde mit Flex3 entwickelt und wird als Adobe® AIR™ Applikation bereitgestellt. Bei der Installation von P.AIR wird die Adobe® AIR™ runtime automatisch mitinstalliert.

Funktionen

– Strukturierte, übersichtliche und sichere Passwortverwaltung
– Mehrplatznutzung (P.AIR Advanced)
– Suchfunktion in unterschiedlichen Bereichen
– Automatische Generierung von Passwörtern

P.AIR Advanced

Die Netzwerklösung P.AIR Advanced befindet sich momentan im Endstatium der Entwicklung. Diese bietet Firmen mit mehr als einem Nutzer zusätzlich die Möglichkeit, ihre Passwörter zentral zu verwalten. Die Netzwerklösung speichert die Daten in einer MySQL-Datenbank auf einem von Ihnen angegebenen internen Server. Somit kann jeder berechtigte Mitarbeiter zu jeder Zeit auf die Passwörter zugreifen, wobei sie von außen nicht zugänglich sind.

Sicherheit

Da es sich bei Passwörtern im vertrauliche Daten handelt werden diese mit dem Advanced Encryption Standard mit 128 bit synchron verschlüsselt in der Datenbank gespeichert. Für die Netzwerkversion ist außerdem ein Key-File notwendig um überhaupt auf die Datenbank zugreifen zu können. Dieser Schlüssel kann vom Admin generiert und an alle berechtigten Mitarbeiter weitergegeben werden.
Die Applikation nimmt zu keinem Zeitpunkt selbständig Kontakt mit dem Internet auf, lediglich wenn auf den Button „Check for Updates“ geklickt wird wird die momentan installierte Version mit der aktuellen Version auf dem Server updates.zeroseven.de verglichen und bei bedarf upgedatet.

Für Fragen, Anregungen und eventuelle Bugs und Schwierigkeiten hinterlasst bitte Kommentare zu diesem Blogpost.

Error listenerStart

Beim Aufsetzen von Projekten mit BlazeDS und Spring bin ich häufiger über einen Fehler gestoßen, der nicht sehr aussagekräftig ist. Die Suche im WWW war dabei fast nie eine Hilfe, deswegen habe ich dem Error listenerStart einen eigenen Eintrag gewidmet, in der Hoffnung, das Andere mehr damit anfangen können als ich mit den Ergebnissen, die ich zu jener Zeit gefunden habe.

Der Fehler manifestiert sich folgendermassen in der Standardausgabe des Tomcat-Servers:

20.06.2008 09:46:15 org.apache.catalina.core.StandardContext start
SCHWERWIEGEND: Error listenerStart
20.06.2008 09:46:15 org.apache.catalina.core.StandardContext start
SCHWERWIEGEND: Context [/mein_projekt] startup failed due to previous errors
20.06.2008 09:46:15 org.apache.coyote.http11.Http11Protocol start

In vielen Fällen tritt der Fehler dann auf, wenn Konfigurationsdateien, welche direkt Spring betreffen syntaktische Fehler beinhalten. Hier am Beispiel der Datei contextConfiguration.xml welche über

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/contextConfiguration.xml</param-value>
</context-param>

eingebunden wird. Ist beispielsweise die Definition einer SpringBean nicht in korrektem XML angegeben, tritt der Fehler Error listenerStart auf. Weitere Ursachen können fehlende Treiber sein, die sich nicht im entsprechenden Verzeichniss finden. Ein Kandidat dafür könnte der Treiber zur Datenbank oder andere fehlende jar’s sein.

In jedem Fall lohnt sich der Blick in die log-Dateien im /tomcat/logs Verzeichniss, dort werden zumindest syntaktische Fehler angezeigt. Um dafür die Genauigkeit der Fehlerausgabe einzustellen kann man im /tomcat/conf Verzeichniss die Datei logging.properties entsprechend anpassen.

AIR Applikationen Updaten

Das Szenario ist bekannt, eine Anwendung wurde fertiggestellt, natürlich wurde alles ausreichend getestet und doch stellt sich nach einem erfolgreichen Launch heraus, es gibt doch noch den ein oder anderen Bug. Oder ein bestimmtes Feature wird noch nachgeschoben. Das ist bei einer Webapplikation kein Problem, die entsprechenden Files werden geändert und auf dem Server erneuert. Doch eine AIR Applikation ist auf den Systemen der Benutzer installiert und kann nicht von einem zentralen Ort upgedatet werden. Außer man hat beim Entwickeln daran gedacht eine Updatefunktion einzubauen. Genau für diesen Zweck gibt es in Adobe AIR eine spezielle Updater Klasse. Mithilfe dieser Klasse können AIR Anwendungen einfach und unkompliziert upgedatet werden.

Update Klasse
Die Updater Klasse enthält folgende Funktion update
public function update(airFile:File, version:String):void

Wird diese Funktion aufgerufen, wird die laufende Applikation beendet (wie wenn NativeApplication.exit() aufgerufen würde), die Applikation auf die die Variable airFile verweist wird installiert und gestartet. Aus Sicherheitsgründen muss die Variable version die korrekte Version der zu installierenden Anwendung enthalten.
Diese Versionsnummer kann aber nicht fest in die Applikation codiert werden, ansonsten wäre immer nur ein Update von einer bestimmten zu einer bestimmten Version möglich. Eine Möglichkeit ist nun eine XML-Datei auf einen Update-Server zu legen in der die Versionsnummer der aktuellen Version und der Pfad zum .air File gespeichert wird. Diese wird dann heruntergeladen, geparst und die Version wird mit der aktuell installierten Version verglichen. Ist die Version auf in der XML-Datei neuer als die aktuell installierte Software wird der Benutzer benachrichtigt und das Update kann durchgeführt werden.

AIRRemoteUpdater
Mit dem AIRRemotUpdater von „cotedazur brazil“ wird das Updaten erheblich vereinfacht. Das erstellen, updaten und parsen der XML-Datei fällt hier komplett weg, denn Der AIRRemoteUpdater vergleicht die momentan installierte Version der Anwendung mit der neusten verfügbaren Version auf einem Webserver (ohne das .air File herunterzuladen). Handelt es ich um eine andere Version kann die neue Version heruntergeladen und über die Updater.update Funktion (siehe oben) installiert werden.

Dieser ganze Prozess kann nun automatisiert werden, so dass zum Beispiel bei jedem Start der Anwendung abgefragt wird ob eine neue Version verfügbar ist. Somit bleiben die Benutzer der Anwendung immer auf dem neusten Stand. Wichtig ist jedoch die Update Funktionalität von Anfang an einzubauen, ansonsten können die Benutzer der ersten Stunde nicht über Updates informiert werden.

BlazeDS und Spring

Durch BlazeDS ist es möglich Flex-Anwendungen mit einem Applikationsserver wie Tomcat sprechen zu lassen. Von Haus aus läuft auf Tomcat zunächst einmal normales Java.

Die Verwendung des Java-Frameworks Spring erleichtert dabei auf der Serverseite alltägliche Arbeiten wie die Verbindung zu einer Datenbank oder den Mail-Versand. Würde man ohne die Hilfe von Spring auf eine Datenbank zugreifen, müsste man sich die Datenbank-Abstraktions-Schicht selbst implementieren. Diese Funktionalität ersetzt Spring beispielsweise so, das lediglich die Konfiguration des Datenbankzugangs vorgenommen werden muss, und dann mit wenigen Zeilen Java-Code die Datenbankverbindung steht. Damit das funktioniert muss man sich noch den zu der gewünschten Datenbank passenden JDBC-Treiber suchen (im Falle von MySQL wäre das der MySQL-Connector) und zu den Libraries in den Container legen. Zur Verwendung der Mailfunktionalitäten, bietet Spring Mail-Templates für den Versand normaler Mails, sowie von Mime-Mails mit Anhängen.

Um zu verstehen wie Spring arbeitet und welche Möglichkeiten sich mit Spring bieten lohnt sich in jedem Fall ein Blick auf die umfangreiche Dokumentation.

AIR Anwendungen zertifizieren

Um die Identität des Herausgebers einer AIR Anwendung sicherzustellen, muss beim Erstellen einer AIR Anwendung ein Zertifikat verwendet werden. Es ist möglich dieses Zertifikat selbst zu erstellen, jedoch wird dann bei der Installation der Anweunden ein rotes Fragezeichen angezeigt, und bei Publisher steht „UNKNOWN“.

AIR Installation Fenster

Zertifikate bei Thawte bestellen

Die von Adobe empfohlene Firma Thawte verkauft offizielle Adobe AIR Entwickler Zertifikate. Leider wurden wir auf deren Website automatisch auf die deutsche Seite weitergeleitet, auf der das AIR Zertifikat nicht angeboten wurde. Nach einer Umstellung der bevorzugten Sprache in Firefox konnten wir dieses Problem umgehen.

Wichtig ist, dass für den ganzen Prozess der Browser Firefox benutzt wird. Währen der Bestellung wird ein privater Schlüssel generiert und im Browser gespeichert, dieser ist wieder nötig wenn um später das Zertifikat abzuholen.

Nach dem das Bestellformular abgeschickt wurde, wird die angegebene Firma von Thawte autorisiert. In diesem Prozess kann es sein, dass noch weitere Informationen zur Firma benötigt werden. Wir wurden zweimal angerufen um die angegebenen Informationen nochmal zu überprüfen.
Schon nach wenigen Stunden erhielten wir dann eine Email mit einem Link zum download des Zertifikats.
Nach dem einloggen werden alle Informationen des Zertifikats angezeigt, inklusive Versionsnummer und Laufzeit. Über den Button „Fetch certificate“ kann das Zertifikat abgeholt werden. Nun wird das Zertifikat im Firefox gespeichert.

Über „Firefox/Einstellungen/Erweitert/Zertifikate anzeigen“ (Max OS) bzw. „Extras/Einstellungen/Erweitert/Zertifikate anzeigen“ (Windows) kann das Zertifikat angezeigt und kann von dort über den „Backup“ Button als .p12 Datei abgespeichert werden. Hier muss ein Backup Passwort vergeben werden, das bei der Erstellung der signierten AIR Applikation wieder benötigt wird.

Nun ist die Herkunft der AIR Applikation offiziell bestätigt und der Firmenname wird im Installationsfenster angezeigt.

AIR Installationsfenster Signiert

Echtzeit Datenvisualisierung mit BlazeDS

BlazeDS ist eine serverseitige Technologie die auf einem J2EE-Applikationsserver wie Apache Tomcat aufsetzt. BlazeDS bietet viele Möglichkeiten direkt vom Server Funktionen auszuführen, die mit Standard-Servertechnologien wie Apache in Verbindung mit PHP nicht, oder nur mit großem Aufwand möglich wären. Hier bietet BlazeDS z.B. out of the box die Synchronisation von Webclient und Datenbank in Echtzeit. Das heißt, trägt ein User über eine Applikation einen Wert in die Datenbank sehen alle andere User die ebenfalls die Applikation geöffnet binnen unter einer Sekunden die Aktualisierung der Daten. BlazeDS stellt die Brücke zu JAVA dar. Neben dem klassischen JDBC ist es so auch möglich über RemoteObjects Classen in Java zu schreiben, die dann direkt von Flex aufgerufen werden können. Somit ist dem Funktionsumfang fast keine Grenze gesetzt. BlazeDS unterliegt hier der Open-Source-Lizenz LPGL v3.

Adobe AIR

Die Grundidee von Adobe AIR (Adobe Integrated Runtime) ist, dass den Entwicklern die Möglichkeit gegeben wird, mit Webtechnologien Desktop-Anwendungen zu erstellen. Dabei ist es nicht mehr notwendig, auf die bisherigen Programmiersprachen wie C# oder C++ zurückzugreifen zu müssen. Adobe AIR verbindet hierbei die bekannten Technologien von Flash, Flex, HTML, Ajax oder JavaScript. Darüber hinaus bietet AIR nun auch die Möglichkeit Funktionalitäten des Betriebssystems wie z.B. Lese- und Schreibzugriff der lokalen Festplatte zu nutzen. Auch das aufwendige Portieren einer Desktop-Anwendung auf unterschiedliche Betriebssysteme gehört nun der Vergangenheit an. Eine Entwicklungsumgebung für die drei Betriebssystem Windows, MacOS und Linux.
Eine von Grund auf gutgeplante Webentwicklung unter Flex kann ein Großteil einer Desktop-Entwicklung beinhalten.