Невозможно определить пользовательский контекст в концентраторе SignalR, украшенном атрибутом «Авторизация»

сервер

Концентратор SignalR в MVC 5 WebApi 2, Безопасность: токен на предъявителя

клиент

Класс C #, использующий HttpWebRequest для получения токена канала-носителя из контроллера WebApi / конечной точки токена

Я использовал описанный шаблонВот а такжеВот доставить токен-носитель в мой подкласс AuthorizeAttribute.

Когда код в методе AuthorizeHubConnection выполняет тикет, доставленный вызовом «secureDataFormat.Unprotect (token)», всегда равен нулю. Я подтвердил, что токен идентичен на обоих концах сообщения.

Вот метод переопределения:

public override bool AuthorizeHubConnection(AspNet.SignalR.Hubs.HubDescriptor hubDescriptor, IRequest request)
{
     var dataProtectionProvider = new DpapiDataProtectionProvider();

     var secureDataFormat = new TicketDataFormat(dataProtectionProvider.Create());
     var token = request.QueryString.Get("Bearer");
     var ticket = secureDataFormat.Unprotect(token);

     if (ticket != null && ticket.Identity != null && ticket.Identity.IsAuthenticated)
     {
       // set the authenticated user principal into environment so that it can be used in the future
       request.Environment["server.User"] = new ClaimsPrincipal(ticket.Identity);
       return true;
      }

      return false;
 }

Когда я запускаю концентратор без атрибута authorize и устанавливаю точку останова в переопределении «OnConnected», свойство Context.User также становится пустым.

Будем очень благодарны любой помощи.

Богатые

Ответы на вопрос(2)

Ваш ответ на вопрос