2014-09-24 4 views
2

У меня есть приложение Azure WebRole (MVC) и Azure Worker.OWIN Authentication

Теперь у меня есть концентраторы SignalR, размещенные в роли рабочего, используя Owin.SelfHost.

Приложение MVC должно называть эти хабы в рабочей роли - что довольно просто.

Теперь моя проблема - аутентификация.

Мне нужно получить доступ к Context.User.Identity WebRole в webrole, чтобы я все еще мог аутентифицировать вызовы в своих концентраторах.

работник Роль

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); 
      }); 

      ..... 
     }); 

} 

Как-то, мне нужно пройти -пользователь.контекст (Asp.net идентичности) от моего WebRole к Owin Трубопровод в рабочей роли.

Любая идея, как это сделать?

+0

Любой, кто может помочь? –

+0

- это веб-сайт и собственный хост signalr в том же домене? Вы можете поделиться файлом cookie между ними, установив путь к файлу cookie. Я не назвал ответ, потому что там будет несколько драконов. –

+0

Да, он находится в том же домене, сайт находится в порту 80 и использует CookieAuthentication и идентификатор ASP.NET, размещенные в IIS, в то время как SignalR находится в порту 8088, который сам OWIN размещается в роли пользователя. Можете ли вы дать мне указатель, как я могу совместно использовать файлы cookie между приложениями? –

ответ

0

Реализация SignalR по указанной ниже ссылке должна отвечать на ваш вопрос.

Вы можете внимательно ознакомиться с атрибутом, который украсит класс концентратора и взглянет на реализацию.

вы также можете посмотреть GetCurrentUserName в самом классе концентратора.

https://github.com/louislewis2/AngularJSAuthentication

Луи

Смежные вопросы