2012-10-18 9 views
5

Ich erstelle eine Phonegap-Anwendung, die es einem Benutzer ermöglichen soll, sich bei unserem zentralen Authentifizierungsdienst anzumelden.Sichere Anmeldung in Phonegap

Meine Sorge ist, dass, da die Dateien auf dem Telefon lokal geladen werden (via file: //), es keine Sicherheit gibt, wie es über eine HTTPS-Verbindung wäre. Wenn ich den Benutzernamen und das Passwort an einen HTTPS-Standort auf unserem Server übergebe, wäre die Anfrage nicht gesichert, obwohl die Antwort lauten würde.

Ich möchte kein ChildBrowser-Plugin für die Anmeldung verwenden, da keine Event-Bubbling zu sehen ist, die mir sagen würde, wenn der Login-Prozess abgeschlossen ist und nicht alle Plattformen das ChildBrowser-Plugin unterstützen.

Es sah so aus, als ob es sinnvoll wäre, eine asymmetrische Verschlüsselung zu verwenden, um die Kombination Benutzername/Passwort mit einem öffentlichen Schlüssel zu verschlüsseln und mit einem privaten Schlüssel auf dem Server zu entschlüsseln. Ich kann nicht scheinen, irgendwelche Javascript-RSA-Bibliotheken zu bekommen, um nett mit Java auf dem Backend zu spielen, obwohl.

Scheint die asymmetrische Verschlüsselung für diesen Fall des Schutzes eines Benutzerpassworts in einer Phonegap-Anwendung angemessen? Gibt es eine bessere Lösung?

Wie würde man das mit Javascript -> Java arbeiten? Ich habe die ohdave.com/RSA-Skripts auf der Client-Seite verwendet, aber Java möchte keinen Schlüssel mit den generierten Schlüsseln von ohdave neu erstellen.

Jede Hilfe wird geschätzt.

Antwort

4

Ich habe inzwischen gelernt, dass das Anfordern des Authentifizierungswebdienstes über HTTPS einen Handshake initiiert, der es ermöglicht, dass die Anmeldeinformationen mit dem SSL-Zertifikat verschlüsselt werden.

Soweit die Anmeldeinformationen auf dem Handy zu speichern hier ist, wie ich es so mache: mit Base64-Codierung in einer Basic Authorization Header

  1. Anmeldeinformationen senden Webservice über SSL anmelden.
  2. Erfolgreiche Anmeldung Antwort enthält Anmeldeinformationen AES mit einem Schlüssel verschlüsselt, der auf dem Server lebt.
  3. AES Verschlüsselte Anmeldeinformationen werden auf dem Telefon gespeichert.
  4. Zukünftige Anmeldungen werden durch Senden der verschlüsselten Anmeldeinformationen an den Login-Webservice über SSL in einem Digest Authorization-Header behandelt.