授权客户端应用程序的所有用户访问Signalr Hub

时间:2019-01-16 23:33:20

标签: c# asp.net signalr

我正在尝试托管一个SignalR集线器,该集线器将允许Android平板电脑上的总线驱动程序与使用Windows应用程序的调度程序之间进行实时通信。这些应用程序只能看到受控版本,因此我可以假设,如果有人使用Android应用程序或Windows应用程序,那么他们就是他们所声称的身份。考虑到这一点,如何验证这些用户?我不想担心单个登录,我只是想防止随意的人访问集线器。

想到的解决方案是在应用程序的分发中包含秘密令牌。这是一种好的做法吗(如果让我知道此SO网站的“好的做法”问题不在范围之内)?如果是这样,应该怎么做?将令牌包含在源代码中,将其作为资产包含吗?

非常感谢您的帮助!!!!

2 个答案:

答案 0 :(得分:1)

您不能100%阻止在应用程序外部访问集线器,但可以对其进行限制。

限制仅访问您的应用程序的标准方法是使用OpenID connectOAuth

根据您的需要,如果您通过将Client Credentials Grant和/或ClientId与{{ 1}}

此流程有助于对您的应用进行身份验证,但是请记住,如果有人要获得ClientSecret,他仍然可以通过身份验证来使用您的Signalr apis

您可能还想看看AccessToken是c#的绝佳库,可以为您处理ClientSecret

答案 1 :(得分:1)

其他选项是向每个用户提供客户端证书,然后他们用来签署SignalR通信。然后,集线器将简单地忽略不包含有效签名的消息。

当然,所有与私钥传输/存储有关的安全问题都将存在。