首页 > 解决方案 > SignalR 服务(无服务器)- Azure Functions

问题描述

我对 SignalR 感到困惑,特别是在使用 Azure SignalR 服务时,在考虑使用 Azure Functions 实现无服务器时更是如此。

我有一个 Web 应用程序和一个 Azure Function 应用程序,它实现了协商功能。客户端上的 JavaScript 已成功协商并能够连接到 Azure SignalR 服务,到目前为止一切顺利。

附带问题:唯一可以阻止任何老人连接并获取令牌的是 CORS 设置吗?这本身就足够安全吗?

在这之后,我感到困惑。我现在有一个 Azure SignalR 服务和一个 Azure Function 应用程序,在建立与 Azure SignalR 服务的客户端连接后,Function App 有什么用处?

在客户端交互方面,我需要做一些事情,比如加入一个组并向所述组广播(来自客户端上的 JavaScript),我假设这将是函数应用程序上的两个附加功能(Http 触发器)?

假设我在上面是正确的,我如何阻止任何人通过函数应用程序 http 端点调用“广播”函数?至少在本地,我可以在不提供初始协商响应中收到的任何信息的情况下从 Postman 调用它。

我还需要从后端代码(.net 标准)将消息推送到组,这是通过调用函数应用还是直接调用 Azure SignalR 服务来完成的?

提前致谢。

标签: c#signalrazure-functionsserverless

解决方案


这是一个很好的问题!
当我开始倾向于完全无服务器的方法时,我也在想同样的事情。

唯一可以阻止任何老人连接并获取令牌的是 CORS 设置吗?这本身就足够安全吗?

当你开始的时候肯定是这样的,但答案是否定的。
您可以验证您的功能。使用内置提供程序,或者您可以通过创建自己的自定义绑定来检查通过标头传递的令牌来验证自己。

在客户端交互方面,我需要做一些事情,比如加入一个组并向所述组广播(来自客户端上的 JavaScript),我假设这将是函数应用程序上的两个附加功能(Http 触发器)?

你假设正确。如果你想完全无服务器,这就是要走的路。您可以像对 SignalR 协商函数进行身份验证一样对函数进行身份验证,并且您将拥有一个安全端点,它将为您调用 SignalR 服务。

我还需要从后端代码(.net 标准)将消息推送到组,这是通过调用函数应用还是直接调用 Azure SignalR 服务来完成的?

这个没有正确答案。这实际上取决于您的特定架构。如果没有更多上下文,试图回答这个问题将是困难/错误的。

哦,如果您要使用 SignalR 实现无服务器,我真的希望您使用它们的绑定。:)


推荐阅读