如何为 Web 服务器上的 signalR 集线器提供控制台应用程序(本地系统)身份验证
How to give a console application (local system) authentifcation for a signalR hub on a webserver
所以我们有一个在 windows 身份验证上运行的 IIS,我们的 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
并且 Web 服务器将位于 Intranet 中的一台机器上。
我在这里有哪些选择? (SSL)-不幸的是,证书不是一个选项。我可以使用令牌吗?有没有我们不必重写 IIS 或整个服务器身份验证的选项?
我使用类似的控制台应用程序来监视我的 IIS 主机,并每 5 秒向监视页面发送有关各种性能计数器的更新,以更新 charts/graphs 和其他元素。
我 运行 使用 Windows 帐户将控制台应用程序作为计划任务,我可以在其中输入它应该 运行 的凭据。这是用于 运行ning 服务、计划任务等的专用帐户...因为您通常不会使用自己的凭据。
就运行宁作为Windows服务而言,这应该也是适用的。使用对 IIS 主机具有适当权限的帐户,并使用这些凭据将服务设置为 运行。
所以我们有一个在 windows 身份验证上运行的 IIS,我们的 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
并且 Web 服务器将位于 Intranet 中的一台机器上。
我在这里有哪些选择? (SSL)-不幸的是,证书不是一个选项。我可以使用令牌吗?有没有我们不必重写 IIS 或整个服务器身份验证的选项?
我使用类似的控制台应用程序来监视我的 IIS 主机,并每 5 秒向监视页面发送有关各种性能计数器的更新,以更新 charts/graphs 和其他元素。
我 运行 使用 Windows 帐户将控制台应用程序作为计划任务,我可以在其中输入它应该 运行 的凭据。这是用于 运行ning 服务、计划任务等的专用帐户...因为您通常不会使用自己的凭据。
就运行宁作为Windows服务而言,这应该也是适用的。使用对 IIS 主机具有适当权限的帐户,并使用这些凭据将服务设置为 运行。