我对SignalR感到困惑,特别是在使用Azure SignalR服务时,甚至在考虑使用Azure Functions的无服务器实现时,甚至更是如此。
我有一个Web应用程序和一个Azure Function应用程序,该应用程序实现了协商功能。到目前为止,客户端上的JavaScript正在成功协商并能够连接到Azure SignalR服务。
侧面问题:是唯一阻止任何老年人连接并获得令牌的CORS设置的方法吗?单靠这个足够安全吗?
在这之后我感到困惑。我现在有一个Azure SignalR服务和一个Azure Function应用程序,在与Azure SignalR Service的客户端连接建立之后,Function App会发挥什么作用?
在客户端交互方面,我需要做一些事情,例如加入一个组并广播到该组(从客户端上的JavaScript),我认为这将是功能应用程序上的两个附加功能(Http触发器)吗?
假设我在上述内容上是正确的,如何阻止任何人通过功能应用程序http终结点调用“广播”功能?至少在本地,我可以从Postman调用它,而无需提供初始协商响应中收到的任何信息。
我还需要将消息从后端代码(.net标准)推送到组,这是通过调用功能应用程序还是直接通过Azure SignalR服务完成的?
谢谢。
答案 0 :(得分:1)
这是一个很好的问题!
当我开始倾向于一种完全无服务器的方法时,我想知道同样的事情。
是唯一阻止任何老年人连接并获得 标记CORS设置?单靠这个足够安全吗?
开始时肯定是这样,但是答案是否定的。
您可以验证您的功能。可以使用http://www.google.com/bot.html,也可以通过创建自己的自定义绑定来检查通过标头传递的令牌来对自己进行身份验证。
关于客户端交互,我需要做一些事情,例如加入一个组并广播到该组(从客户端上的JavaScript),我假设这些将是功能应用程序上的两个附加功能(Http触发器)?
您假设正确。如果您想完全没有服务器,这就是方法。您可以使用与验证SignalR协商功能相同的方式来验证功能,并且您将拥有一个安全的端点,该端点将为您调用SignalR服务。
我还需要将消息从后端代码(.net标准)推送到组中,这是通过调用函数应用程序还是直接通过Azure SignalR服务完成的?
此人没有正确答案。这确实取决于您的特定体系结构。没有更多的背景信息,尝试回答这个问题将很困难/错误。
哦,如果您要使用SignalR进行无服务器化,我真的希望您正在利用它们的绑定。 :)