2014-09-24 4 views
2

저는 Azure WebRole (MVC 앱)과 Azure Worker 역할을 가지고 있습니다.OWIN 인증

이제 SignalR 허브가 Owin.SelfHost를 사용하여 Worker Role에서 호스팅됩니다.

MVC 앱은 worker 역할에서이 허브를 호출해야합니다. 이는 매우 간단합니다.

이제 내 문제는 인증입니다.

허브에 대한 호출을 인증 할 수 있도록 Webrole의 Context.User.Identity에 액세스해야합니다.

public class MyHub: Hub 
{ 
    public override Task OnConnected() { 
     var id = Context.User.Identity.Name; // NULL 
     var connectionId = Context.ConnectionId; 
    } 

    [Authorize] 
    public void SendMessage() ....  
} 

현재 작업자 역할 - 어떻게 든이

public void Configuration(IAppBuilder app) 
    { 

    app.Map("/signalr", map => 
     { 
      map.Run(async context => 
      { 
       var userName = context.Request.Query["user"]; //NULL 
       var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationType); 
       identity.AddClaim(new Claim(ClaimTypes.Name, userName)); 
       context.Authentication.SignIn(identity); 
      }); 

      ..... 
     }); 

} 

붙어 메신저, 나는 Owin 내 WebRole에서 User.Context (Asp.net ID를) 통과해야 작업자 역할의 파이프 라인.

어떻게 할 수 있습니까?

+0

누구? –

+0

은 같은 도메인에있는 웹 사이트 및 신호 자체 호스트입니까? 쿠키 경로를 설정하기 만하면 쿠키를 공유 할 수 있습니다. 그곳에 두 마리의 용들이있을 것이기에 저는 대답으로 나열하지 않았습니다. –

+0

예 동일한 도메인에있는 웹 사이트는 포트 80에 있으며 IIS에서 호스팅되는 CookieAuthentication 및 ASP.NET ID를 사용하는 반면 SignalR은 포트 8088에 있으며 OWIN은 작업자 역할에서 자체 호스팅합니다. 나에게 포인터를 줄 수 있습니까? 응용 프로그램간에 쿠키를 어떻게 공유 할 수 있습니까? –

답변

0

아래 링크에서 SignalR 구현이 귀하의 질문에 응답해야합니다.

허브 클래스를 꾸미는 속성을 자세히 살펴보고 구현을 살펴볼 수 있습니다.

또한 Hub 클래스 자체에서 GetCurrentUserName을 볼 수 있습니다. 도움이 될 수 있습니다

https://github.com/louislewis2/AngularJSAuthentication

루이

관련 문제