Настройки схемы авторизации по токену для SignalR

Рейтинг: 1Ответов: 0Опубликовано: 27.02.2023

Хочу сделать авторизацию через внешний сервис по токену. Подскажите как это сделать, кто с этим уже сталкивался.

Есть 2 системы:

  1. CRM - основной источник информации по пользователю(в этот сервис и будет отправлять токен через post запрос для получении информации по пользователю)
  2. Сам ЧАТ(SignalR) на ASP CORE NET

Логика:

  1. Клиент находиться на сайте CRM и у него открывается чат

  2. При подключении к чату --> со стороны CRM(фронтенда) отправляется token самой CRM в Чат Пример:

        using (var client = new HttpClient())
        {
            string token = Context.GetHttpContext().Request.Query["token"];
            client.DefaultRequestHeaders.Add("X-Vsaas-Session", token);
            var result = await client.GetAsync($" {Program.DomainServerCrm}/api/chat/user");
            if (result.StatusCode == HttpStatusCode.OK)
            {
                var user = await JsonSerializer.DeserializeAsync<User>(await result.Content.ReadAsStreamAsync());
                // 1. Проверка пользователя на существование в БД
                var userDb = _context.Users
                    .Include(u => u.Dialogs)
                    .SingleOrDefault(u => u.Id == user.Id);
                if (userDb != null)
                {
                    //При подключении добавляем во все группы этого юзера
                    foreach (var item in userDb.Dialogs)
                    {
                        await Groups.AddToGroupAsync(Context.ConnectionId, item.Name);
                    }
                    ChatCollection.ClientConnection[Context.ConnectionId] = userDb;
                    await base.OnConnectedAsync();
                }
            }
        }
    
  3. На стороне Чата будет использоваться token от CRM для авторизации.


Схема БАЗЫ ДАННЫХ ЧАТА:

Схема БАЗЫ ДАННЫХ ЧАТА

Ответы

Ответов пока нет.