Как я могу выполнить аутентификацию на основе токенов в SignalR? - PullRequest
0 голосов
/ 28 ноября 2018

Я использую signalR в приложении asp.net mvc, я хочу аутентифицировать междоменных клиентов с помощью аутентификации на основе токенов. Я не нашел полного решения для этого.

 app.Map("/signalr", map =>
    {
        map.UseCors(CorsOptions.AllowAll);

        map.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions()
        {
            Provider = new QueryStringOAuthBearerProvider()
        });

        var hubConfiguration = new HubConfiguration
        {
            Resolver = GlobalHost.DependencyResolver,
        };
        map.RunSignalR(hubConfiguration);
    });

    public class QueryStringOAuthBearerProvider : OAuthBearerAuthenticationProvider
    {
        public override Task RequestToken(OAuthRequestTokenContext context)
        {
            var value = context.Request.Query.Get("access_token");

            if (!string.IsNullOrEmpty(value))
            {
                context.Token = value;
            }

            return Task.FromResult<object>(null);
        }
    }

    public class impAuthHub : Hub
    {
        [Authorize]
        public void SendMessage(string name, string message)
        {
           Clients.All.newMessage(name, message);
        }
    }

Я не знаю, как я будуполучить токен для передачи строки запроса моему классу запуска?

1 Ответ

0 голосов
/ 28 ноября 2018

Вам потребуется использовать аутентификацию OAuth Bearer Token с SignalR.и вам необходимо использовать библиотеки Microsoft OWIN Security и ASP.NET Identity, а затем включить параметры безопасности WebAPI и отдельных учетных записей.Это Full-Demo

Пожалуйста, найдите кодовую базу для рабочего образца git , которая поможет вам.

...