2013-09-06 3 views
6

SignalR을 사용하여 폼 인증 또는 Windows 인증을 수행하는 방법에 대한 정보가 많이 있습니다. 나는 나의 자신의 인증 DB 사용에 관심이있다. 연결 에이전트는 웹 브라우저가 아닌 웹 브라우저이기 때문에 .NET 클라이언트를 사용합니다. 내가 이상적으로 내 클라이언트 코드를 사용하고 싶습니다 :SignalR (.NET 클라이언트)에서 사용자 정의 기본 인증을 사용하려면 어떻게해야합니까?

hubConnection.Credentials = new NetworkCredential(userName, password); 

그리고 내 서버 코드가 허브에 [권한 부여]를 사용하고, 나에게 사용할 수 Context.User을 가지고. 모든 통신은 https를 초과하므로 일반 텍스트는 신경 쓰지 않습니다.

나는 IHttpModule을 사용하여 인증 메커니즘을 재정의하는 방법을 보여줍니다 asp.net basic authentication 가이드를 읽었습니다. 그러나 'Authorization'헤더는 HttpModule에서 코드를 중단 할 때 .NET SignalR 클라이언트에서 오는 요청에 설정되지 않습니다.

내가 인증 서버에서 발생하는 방법을 하찮게 최대 사용자 이름과 클라이언트에서 비밀번호와 코드를 통과하면된다 할 수 있기를 바랍니다. 그렇게 어려운가요? 마술은 없다. Active Directory가 없습니다. 그냥 날 인증.

나의 현재, 작업, 접근 방식은 그러나 분명히 '을 할 수있는 올바른 방법'권한 수준에서 대신 인증을하지 않는 것입니다 (사용자 정의 AuthorizeAttribute 사용) SignalR 수준에서 해석하는 사용자 정의 헤더를 설정하는 것입니다 어떤 웹 서버라도 SignalR이 발생하기 전에 그렇게해야합니다.

사람은 전체를 위해 좋은 절차를 설명하지만, 먼지 단순, 사용자 지정 인증시겠습니까?

답변

5

클라이언트

var connection = new Connection(url + "/echo"); connection.Credentials = new NetworkCredential("user", "password"); await connection.Start();

서버

app.Map("/basicauth", map => { map.UseBasicAuthentication(new BasicAuthenticationProvider()); map.MapSignalR<AuthenticatedEchoConnection>("/echo"); map.MapSignalR(); });

NuGet 패키지가 필요합니다 : Microsoft.Owin.Security.Basic

당신은 전체 샘플을 볼 수 있습니다 here

+0

영형 당신이 스스로 접대한다면 우승 할거야, 그렇지? 나는 IIS에서 호스팅하고있을거야 app.Anything() 생각하지 않습니다. 내가 거기 아니다 놀랍 단지 '는 ValidateUser 방법을 제공하고 당신이 가고 떨어져' – Robin

+0

당신은 내가 Microsoft.Owin.Security.Basic NuGet 패키지에 대한 모든 일을 찾고 있었어요 Owin는 IIS –

+5

에서 호스팅 할 수 있습니다. 더 이상 nuget.org에 없습니다. 다른 NuGet 서버에 있습니까? Katana 프로젝트 사이트에서이 패키지는 2.0.0.0 버전으로 출시되었다고합니다. 도와 주셔서 감사합니다. –

관련 문제