2014-01-21 28 views
22

Ich habe einen Webdienst aufgebaut, der bisher ausschließlich aus ASP.NET-Web-API-Aufrufen bestand. Ich muss nun SignalR in den Mix einfügen, frage mich aber, wie ich den Sicherheitsaspekt konsistent halten kann.SignalR - Authentifizierung mit Zugriffstoken

Ich verwende derzeit OAuth-Bearer-Token (mit OWIN-Authentifizierung), so dass mein Client grundsätzlich ein access_token hat, das ich normalerweise einfach zu den Headern für Web-API-Aufrufe hinzufügen würde. Wie aber mache ich das gleiche (oder ähnliches) mit SignalR? Würde ich mich authentifizieren, wenn ich die Verbindung oder bei jedem Anruf erstelle? Und vor allem, wie würde ich das Zugriffstoken an erster Stelle spezifizieren?

Danke.

+0

JavaScript WebSocket-API lässt keine Anforderung von Kopfzeilen zu. Die beste Option wäre, access_token für die Anfrage-URL-Abfragezeichenfolge festzulegen. –

+0

Danke. Ich kann das tun, aber wie würde ich die Serverseite konfigurieren, um die Abfragezeichenfolge zu lesen und die Identität für meine Hubs zu bestimmen und festzulegen? – Barguast

+0

@Barguast können Sie ein HubPipelineModule erstellen, das die Benutzeridentität für gültige Token festlegt oder den Zugriff auf ungültige Token verweigert. Die zwei Methoden, die Sie überschreiben müssen, damit dies funktioniert, sind OnBeforeConnect und OnBeforeIncoming. http://msdn.microsoft.com/en-us/library/microsoft.aspnet.signal.hubs.hubpipelinemodule(v=vs.118).aspx – halter73

Antwort

2

Ich habe ein Beispiel geschrieben, das bereits einigen Leuten mit SignalR-Authentifizierung geholfen hat. Ich hoffe, dass es Ihnen auch helfen kann.

https://github.com/louislewis2/AngularJSAuthentication

Barguast, sorry für die Kürze meiner Antwort. Wenn Sie den Link durchgehen, werden Sie vielleicht verstehen, dass es zu viele bewegliche Teile gibt, um eine Erklärung der wichtigsten Teile genau zu schreiben, die Sie ebenfalls beachten sollten. Der Beispielcode enthält drei Projekte, von denen Sie nur die .API- und die .Web-Projekte betreffen.

Lassen Sie mich wissen, ob es einen Teil gibt, für den Sie weitere Erläuterungen oder Anleitungen benötigen, und ich werde Ihnen gerne weiterhelfen wie alle anderen Menschen, die auf das gleiche Beispiel gestoßen sind, weshalb ich darum gebeten wurde bauen Sie das Beispiel an erster Stelle auf.

+0

Ich denke, der Kommentar (der von der LowQualityPosts-Review-Warteschlange automatisch generiert wurde) sagt genug, aber bitte lesen Sie die Richtlinien für SO – msrd0

+0

http://stackoverflow.com/review/low-quality-posts/6131615 – msrd0

+0

Danke. Es sieht so aus, als hätten Sie es auf die gleiche Art und Weise geschafft - indem Sie das Access-Token in die Abfragezeichenfolge eingefügt und den Service so geändert haben, dass er dort nach dem Token sucht.Es hat gut für mich funktioniert, und ich habe noch keine andere Möglichkeit gesehen, es zu tun. – Barguast