Невозможно определить пользовательский контекст в концентраторе 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 также становится пустым.
Будем очень благодарны любой помощи.
Богатые