Wie kann ich Benutzer in Play 2.0 WebSocket authentifizieren?

8

ellou

Ich habe eine gemeinsame Play WebSocket-Methode, die wie erwartet funktioniert, aber ich muss den Benutzer authentifizieren. Leider beim Versuch, den einfachsten Benutzer in der Methode zu identifizieren:

%Vor%

Ich bekomme einen Fehler:

%Vor%

Meine aktuelle Problemumgehung besteht darin, einen zufälligen, eindeutigen Bezeichner zum Anzeigen und Speichern im Benutzermodell zu übergeben. Dann kann ich eine Verbindung zum Socket aus der Ansicht herstellen und den Benutzer mit der angegebenen ID finden. Dies ist jedoch nicht perfekt eine WebSocket-Verbindung pro Benutzer und verhindert auch nicht die Fälschung.

Wie soll ich den Benutzer authentifizieren und einen Spoof-Angriff verhindern?

    
biesior 07.05.2012, 15:57
quelle

3 Antworten

0

Da Daten, die ich senden möchte, sensibel sind und in diesem Fall ist Sicherheit für mich wichtiger als Leistung, schließlich habe ich zweistufige Nachrichten verwendet, zuerst über die WebSocket-ID der Nachricht und einige nicht wichtige Daten gesendet und dann über AJAX abgerufen und gesicherter Aktionsnachrichtentext nach der Benutzerauthentifizierung.

Frage bleibt offen: Natürlich, wenn es andere Vorschläge gibt, werde ich meine Stimme ändern:)

    
biesior 08.05.2012, 11:47
quelle
1

Ich weiß nicht, woher Ihr Stück Code kommt, aber Sie sollten in der Lage sein, auf die HTTP-Anfrage bei der Initialisierung des Websocket (erste Verbindung) zuzugreifen, dh Sie sollten erst beim Initiieren des Websocket-Socket-Verbindung (der nachfolgende Aufruf verwendet kein HTTP, so funktioniert Webscokets).

So könnten Sie zum Beispiel in Ihrem Controller so etwas haben:

%Vor%     
nico_ekito 07.05.2012 20:32
quelle
1

Haben Sie versucht, die authentifizierte Benutzer-ID stattdessen von der HTTP-Sitzung abzurufen? Der Kontext scheint zu diesem Zeitpunkt verfügbar zu sein.

    
Jason C 03.07.2012 01:06
quelle