Listado y bloqueo de IP de clientes en SignalR

En Asp.net (core) .net 5, en el lado de SignalR, ¿cómo podemos enumerar (recibir) las IP de los clientes y bloquear o permitir ciertas conexiones y solicitudes de IP por IP?

En mi investigación, vi que solo se mencionaba Azure SingalR.

¿Cómo podemos decirle a SignalR Hub que solicite direcciones IP de clientes y acepte (lista blanca) o bloquee (lista negra) solicitudes de conexión pública de direcciones IP específicas codificando en la aplicación?

Es posible ?

Answer

En SignalR puedes obtener la ip del usuario con el HttpContext.

public class AppHub : Hub
{
    public string Ip => Context.GetHttpContext().Connection.RemoteIpAddress.ToString();

    public override async Task OnConnectedAsync()
    {
        if (Ip == "::1")
        {
            await Clients.All.SendAsync("ReceiveMessage", "Server", "Welcome to the server!");
        }
        else
        {
            throw new Exception("You are not allowed to connect to this server!");
        }

        await base.OnConnectedAsync();
    }
}

Otra solución sería crear un filtro concentrador cuya documentación puede encontrar aquí: https://docs.microsoft.com/en-us/aspnet/core/signalr/hub-filters?view=aspnetcore-6.0