我正在尝试托管一个SignalR集线器,该集线器将允许Android平板电脑上的总线驱动程序与使用Windows应用程序的调度程序之间进行实时通信。这些应用程序只能看到受控版本,因此我可以假设,如果有人使用Android应用程序或Windows应用程序,那么他们就是他们所声称的身份。考虑到这一点,如何验证这些用户?我不想担心单个登录,我只是想防止随意的人访问集线器。
想到的解决方案是在应用程序的分发中包含秘密令牌。这是一种好的做法吗(如果让我知道此SO网站的“好的做法”问题不在范围之内)?如果是这样,应该怎么做?将令牌包含在源代码中,将其作为资产包含吗?
非常感谢您的帮助!!!!
答案 0 :(得分:1)
您不能100%阻止在应用程序外部访问集线器,但可以对其进行限制。
限制仅访问您的应用程序的标准方法是使用OpenID connect
和OAuth
,
根据您的需要,如果您通过将Client Credentials Grant
和/或ClientId
与{{ 1}}
此流程有助于对您的应用进行身份验证,但是请记住,如果有人要获得ClientSecret
,他仍然可以通过身份验证来使用您的Signalr apis
您可能还想看看AccessToken
是c#的绝佳库,可以为您处理ClientSecret
答案 1 :(得分:1)
其他选项是向每个用户提供客户端证书,然后他们用来签署SignalR通信。然后,集线器将简单地忽略不包含有效签名的消息。
当然,所有与私钥传输/存储有关的安全问题都将存在。