Was ist der beste Weg, um restful_authentication / AuthLogic zu erweitern, um faule Anmeldungen von einem anonymen iPhone zu unterstützen?

8

Ich baue eine iPhone-Anwendung, die mit einem Ruby on Rails-Backend kommuniziert. Die Ruby on Rails-Anwendung wird auch Web-Benutzer bedienen. Das restful_authentication-Plugin ist eine hervorragende Möglichkeit, um eine schnelle und anpassbare Benutzerauthentifizierung bereitzustellen. Ich möchte jedoch, dass Benutzer der iPhone-Anwendung ein Konto erstellen lassen, das automatisch über die eindeutige Kennung des Telefons ([[UIDevice device] uniqueIdentifier]) in einer neuen Spalte gespeichert wird. Später, wenn Benutzer bereit sind, einen Benutzernamen / ein Passwort zu erstellen, wird das Konto aktualisiert, um den Benutzernamen und das Passwort zu enthalten, wodurch die eindeutige ID des iPhones erhalten bleibt. Benutzer sollten erst dann auf die Website zugreifen können, wenn sie ihren Nutzernamen / ihr Passwort eingerichtet haben. Sie können jedoch die iPhone-Anwendung verwenden, da sich die Anwendung mithilfe ihrer Kennung authentifizieren kann.

Was ist der beste Weg, um restful_authentication zu modifizieren, um dies zu tun? Ein Plugin erstellen? Oder ändern Sie den generierten Code?

Was ist mit alternativen Frameworks wie AuthLogic? Wie kann iPhones am besten ein generiertes Authentifizierungs-Token erhalten, das an seine UUIDs gebunden ist, aber den Benutzer später einen Benutzernamen / ein Passwort erstellen lassen?

    
Kevin Elliott 09.12.2008, 02:38
quelle

4 Antworten

6

Ich denke, Sie sollten die Telefonkennung nicht zur Authentifizierung verwenden, da sie kein Geheimnis ist und wahrscheinlich auch vorhersehbar ist. Vergessen Sie nicht, dass jemand, der Ihre Web-App hacken wollte, seinen Code nicht verwenden muss - er kann nur Geräte-IDs erraten und versuchen, sich mit Ihren Benutzerdaten über einen beliebigen Web-Client zu messen.

Sie sollten die Geräte-ID ähnlich wie einen Benutzernamen behandeln - sie dient der Identifizierung und nicht der Authentifizierung. Ich schlage vor, dass Sie den Benutzer dazu bringen, ein Passwort zu wählen oder sogar einen zufälligen Code automatisch zu generieren. Senden Sie dann die Geräte-ID + dieses Passwort / Code, um das Gerät zuerst zu registrieren und anschließend das Gerät zu authentifizieren.

Sie können auch darauf wetten, dass einige Benutzer mehr als ein Gerät haben - entweder werden sie eines ersetzen, oder Sie werden jemanden wie Stephen Fry bekommen, der mit 4 iPhones unterwegs ist. Um dies zu beheben, schlage ich vor, dass Sie nach einer Möglichkeit suchen, um restful_authentication zweimal zu instanziieren, einmal zum Authentifizieren von Benutzern und ein zweites Mal zum Authentifizieren von Geräten. Ich habe dieses Plugin nicht benutzt, aber ich nehme an, dass Sie nur verschiedene Tabellenparameter verwenden müssen, um dies zu ermöglichen. Dann können Benutzer in Ihrer Anwendungslogik mehr als ein Gerät mit ihrem Konto verknüpfen.

Um dies sicher zu tun, tun Sie es entweder vom Gerät oder lassen Sie das Gerät einen zufälligen Code anzeigen, den sie dann in die Web-App eingeben, um zu beweisen, dass sie das Gerät besitzen (das klingt schmerzhafter als es ist - es ist der gleiche Prozess Diesen Apfel benutzen Sie in iTunes, Apple TV und der Remote-App - schauen Sie sich an, wie sie das machen - also wird es für die Benutzer nicht so überraschend sein.

(Achten Sie auch darauf, dass Sie beim Generieren von beliebigen Passwörtern einen kryptografischen Zufallszahlengenerator als Grundlage verwenden - dafür gibt es wahrscheinlich eine iPhone-API - andernfalls könnten Ihre Passwörter vorhersehbar sein).

    
frankodwyer 14.12.2008, 01:27
quelle
0

Haben Sie versucht, ein anderes Authentifizierungsschema wie Authlogic zu verwenden? Ich habe festgestellt, dass restful_authentication eher aufdringlich ist (obwohl ich mit bort betrog) / a>).

    
Keltia 09.12.2008 14:36
quelle
0

Erzeugt ein zufälliges Passwort in Rails link text Ich verwende das Restful_authentication Plugin für eines meiner Projekte. Im Rahmen meines Benutzererstellungs-Workflows sollte das System ein zufälliges Passwort für den neuen Benutzer generieren.

    
Mikhailov 06.01.2009 17:07
quelle
0

Was denkst du über die Verwendung der UDID und ein zufälliges Passwort, das mit der UDID + einem standortweit definierten Salz erzeugt wurde?

Etwas wie:

%Vor%

Wenn Sie das nächste Mal eine Verbindung herstellen, senden Sie das Passwort an das iPhone.

    
Leandro Ardissone 03.04.2010 02:47
quelle