2017-09-03 1 views
0

ASP.NET Core 1.1 및 2.0의 경우에는 SignalR을 사용할 수 없습니다. 그 동안 나는이 한계를 극복 할 필요가있다.ASP.NET 코어가 SignalR 업데이트를 수신합니다.

내가 만들고있는 응용 프로그램은 ASP.NET Core 1.1 MVC 응용 프로그램입니다. 이 애플리케이션의 작지만 중요한 기능 중 하나는 사례 관리입니다. 특정 사용자에 대한 새로운 수신 사례로보기를 업데이트해야합니다.

내 SignalR 2 허브는 별도의 ASP.NET 4. * 응용 프로그램에서 실행됩니다.

나는 이것이 .NET 클라이언트 대신 SignalR JavaScript 클라이언트를 쉽게 사용할 수 있고 Bob은 당신의 삼촌이라는 것을 모든 방향으로 바라보고있었습니다. 그러나 문제는 AuthN/AuthZ 내가 Azure 광고 B2C (oauth2)를 사용하고 있습니다

MVC 응용 프로그램 내에서 표준 쿠키 승인을 사용하지만 백엔드 API에 사용하고있는 패턴은 내가 사용하는 것입니다 베어러 토큰에 액세스 토큰을 래핑하는 MVC 코드를 사용하여 jwt 베어러 인증을 사용하는 백엔드 API로 전송합니다. 따라서 고객 측 JavaScript는 MVC 앱이 View와 Controller 사이에서 사용하는 쿠키 만 액세스 토큰을 볼 수 없습니다.

문제는 JavaScript를 사용하여 허브에 연결하려는 경우 jwt 토큰이 MVC 호스트에만 존재하며 쿠키가 HTTP만으로 액세스 할 수 없기 때문에 허브에 보내지는 것이 아무것도 없다는 것입니다. .

어떤 아이디어 나 대안이 있습니까?

감사합니다!

+0

백엔드 서비스에서 왜 인증을 사용하고 있습니까? firewalled ip 대신 http 또는 https를 사용하십시오. – Softlion

답변

0

알았어! hubConnection의 시작 방법을 통해

  • 사용을 설정 쿠키 공유에 https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/compatibility/cookie-sharing에 XMLHttpRequest.withCredentials에 true를 withCredentials =을

    1. 따르 지침을 : 내 MVC 응용 프로그램에서 쿠키를 따라 전달하는 다음과 같은 방법을 사용할 수 있습니다 in SignalR

      conn.start (withCredentials : true)) 완료 (function() { hub.invoke ('recordHit'); });

    2. 허브 프로젝트에서 CORS를 설치하십시오.

    쉬운! 매력처럼 작동

  • 관련 문제