2014-03-13 7 views
10

Die Upgrade-Anforderung zum Öffnen einer Websocket-Verbindung ist eine Standard-HTTP-Anforderung. Auf der Serverseite kann ich die Anfrage wie jede andere authentifizieren. In meinem Fall möchte ich die Bearer-Authentifizierung verwenden. Leider gibt es keine Möglichkeit, beim Öffnen einer Websocket-Verbindung im Browser Header anzugeben, was zu der Annahme führen würde, dass es nicht möglich ist, die Authentifizierung des Inhabers einer Web-Socket-Upgrade-Anfrage durch die Bearer-Authentifizierung zu verwenden. Also - Fehle ich etwas oder ist es wirklich unmöglich? Wenn es unmöglich ist, ist dies von Entwurf, oder ist das ein eklatanter Überblick in der Browser-Implementierung der Websocket-API?Kann die Bearer-Authentifizierung für Websocket-Upgrade-Anfragen verwendet werden?

Antwort

8

Die API ermöglicht es Ihnen, genau eine Kopfzeile festzulegen, nämlich Sec-WebSocket-Protokoll, d. H. Das anwendungsspezifische Subprotokoll. Sie könnten diesen Header zum Übergeben des Bearer-Tokens verwenden. Zum Beispiel:

new WebSocket("ws://www.example.com/socketserver", ["access_token", "3gn11Ft0Me8lkqqW2/5uFQ="]); 

Der Server wird erwartet, dass eines der Protokolle akzeptieren, so für das obige Beispiel, können Sie einfach das Token validieren und reagieren mit Kopf Sec-WebSocket-Protokoll = access_token.

+0

Ich verwendete diesen Ansatz, außer dass ich das Token und den Wert in einem einzelnen "Protokoll" -Wert verkettete. Vielen Dank! – dmansfield

Verwandte Themen