Итак, у нас есть IIS, который запускается при аутентификации Windows, и у нашего asp.net есть базовый концентратор signalR:
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
public class DemoHub : Hub
{
public void SendHello(string text)
{
Clients.All.hello(new Random().Next() + " - " + text);
}
}
У нас есть клиент консольного приложения, который также прост:
class Program
{
static async Task Main(string[] args)
{
var url = "http://localhost/";
var hubConnection = new HubConnection(url);
hubConnection.Credentials = CredentialCache.DefaultCredentials;
var hubProxy = hubConnection.CreateHubProxy("DemoHub");
await hubConnection.Start();
while (true) {
Console.WriteLine("Type something!");
var text = Console.ReadLine();
await hubProxy.Invoke("SendHello", new [] {text});
}
}
}
В настоящее время клиент использует учетные данные Windows CredentialCache.DefaultCredentials
, но в производственной среде это не будет работать, поскольку консоль будет службой Windows, работающей на local system
, а веб-сервер будет расположен на компьютере в интрасети.
Какие у меня есть варианты? (SSL) - Сертификат, к сожалению, не вариант. Могу ли я использовать токен? Есть ли вариант, когда нам не нужно переписывать IIS или всю аутентификацию сервера?