2014-01-21 158 views
22

我一直在構建一個到目前爲止完全由ASP.NET Web API調用組成的Web服務。我現在需要將SignalR加入組合中,但我想知道如何保持安全性方面的一致性。SignalR - 使用訪問令牌進行身份驗證

我目前正在使用OAuth承載標記(使用OWIN認證),所以我的客戶端基本上會有一個access_token,我通常會簡單地將它添加到任何Web API調用的標頭中。但是,如何使用SignalR執行相同的操作(或類似操作)?我會在創建連接或每次通話時進行身份驗證嗎?而且,最重要的是,我將如何首先指定訪問令牌?

謝謝。

+0

JavaScript WebSocket API不允許設置請求標頭。您最好的選擇是在請求url查詢字符串上設置access_token。 –

+0

謝謝。我可以這樣做,但我如何配置服務器端來讀取查詢字符串並確定並設置我的集線器的身份? – Barguast

+0

@Barguast你可以創建一個HubPipelineModule,爲有效標記設置用戶標識或拒絕訪問無效標記。你需要重寫這兩種方法才能工作:「OnBeforeConnect」和「OnBeforeIncoming」。 http://msdn.microsoft.com/en-us/library/microsoft.aspnet.signalr.hubs.hubpipelinemodule(v=vs.118).aspx – halter73

回答

2

我寫了一個樣本,已經幫助了幾個已經使用SignalR認證的人。 我希望它也可以幫助你。

https://github.com/louislewis2/AngularJSAuthentication

Barguast,對不起我的迴應的簡潔。通過鏈接你可能會明白,有太多的運動部件讓我準確地寫出你應該關注的最重要部分的解釋。示例代碼包含三個項目,其中您只關注.Api和.Web項目。

讓我知道是否有任何部分需要您進一步澄清或指導,我會像所有其他遇到同樣例子需求的人一樣,幫助您,這就是爲什麼我被要求首先建立例子。

+0

我認爲這個評論(由LowQualityPosts-Review-Queue自動生成)說得不夠多,但請閱讀SO – msrd0

+0

的指導原則http://stackoverflow.com/review/low-quality-posts/6131615 – msrd0

+0

謝謝。它看起來像你所做的一樣 - 將訪問令牌添加到查詢字符串,並修改服務以查找令牌。它一直在爲我工作,我還沒有看到其他任何方式。 – Barguast

相關問題