2014-01-10 2 views
5

ASP.NET Identity를 사용하여 SignalR 작업을 만들려고합니다.SignalR ASP.NET MVC5 Identity

Context.User.Identity

어쨌든 : 코드는 우리가 새로운 MVC5 웹 응용 프로그램을 만들 경우, 호출하여 사용자를 인식, Google 계정 외부 있도록 구글 계정으로 로그인하여 허브에 요청을 매우 간단 , 이것은 항상 null을 반환하고 그것은 클라이언트 프록시가 외부 쿠키를 보낼 수없는 것 같습니다.

http://gobbe.net/2013/06/13/use-the-asp-net-membership-in-a-signalr-chat-with-an-asp-net-mvc-4-application/

해결 방법은 작동하지만 다른 솔루션을 사용하는 것을 선호 :

여기에 명시된 유일한 해결 방법은 동일한 단계를하고있다. 또한 https://github.com/gustavo-armenta/CookieAuthenticationSample을 확인했지만 외부 인증을 사용하지 않습니다.

허브가 ASP.NET ID의 외부 인증 스키마를 인식하는 방법에 대한 다른 아이디어가 있습니까?

감사합니다.

+0

"해결 방법은 효과가 있지만 다른 해결책을 사용하는 것이 좋습니다"- 구체적인 이유는 무엇입니까? 누군가 당신에게주는 다음 제안이 당신이 이미 알고있는 해결 방법과 똑같은 문제가 있다면 어떨까요? 그 이유를 설명하면 피할 수 있습니다. –

+0

의견에 감사드립니다. 내가 뭔가를 놓치고 있는지 또는 SignalR이 ASP.NET ID를 사용하는 외부 인증을 지원하지 않는지 이해하고 있다면, 해결 방법으로 대체 할 것입니다. –

+0

해결 방법은 매우 안전하지 않습니다. 악의적 인 클라이언트가 임의의 표시 이름에 대해 유효한 토큰을 만드는 것은 어렵지 않습니다. 저자가 일종의 HMAC를 수동으로 구현하려했지만 비밀 키가 없어서 완전히 실패한 것 같습니다. System.Web.Security.MachineKey 또는 System.Security.Cryptography.ProtectedData와 같은 것을 사용하는 것이 훨씬 낫습니다. – halter73

답변

8

Ok. 수 시간의 검색 후 jabbr 온라인 지원에 갔고 davidfowl이 도와주었습니다. 문제는 Startup 클래스에 대한 호출 순서입니다. 나는했다 :

 app.MapSignalR(); 
     ConfigureAuth(app); 

대신 :

 ConfigureAuth(app); 
     app.MapSignalR(); 

감사 데이빗.