希望你能在这个场景中提供帮助。我们有一个基于浏览器的支持应用程序,使用SignalR进行客户聊天。该解决方案包括两个web应用程序:admin.[domain].com和support.[domain].com。两者都是C# ASP.NET核心3.1MVC应用程序。
支持工程师使用管理应用程序为聊天提供服务。SignalR集线器托管在管理应用程序中。管理应用程序使用ASP.NET核心身份进行身份验证和授权。
然而,支持应用程序没有身份识别机制-我们需要一个“低摩擦”的解决方案,用户只需连接到support.domain.com/{GUID},不需要密码。GUID是由支持工程师预先生成的SignalR组名称。遇到此路线时,支持应用程序将调用AddToGroup(GUID)。
SignalR文档指出,组不是一种有效的安全机制。但是,如果组名是GUID,并且我们从不发送到所有客户端,那么这是一种合理的安全方法吗?
消息仅在组内发送或接收。GUID使得组名称非常安全,我想。
如果组名称是未知的GUID,聊天是否容易被窃听?有没有比这种方法更好/更安全的替代方法,而不需要客户端输入密码?
发布于 2020-06-22 23:29:46
正如你所说的groups are not a security mechanism。但在您的情况下,您想要做的是很好的,因为,只要用户连接到集线器,组管理是由管理员进行的,在聊天会话之后,管理员可以删除组,这样用户以后就不能加入它。
你需要明确的是,这是一个公共会话,就像你在白板这样的应用程序中看到的那样,如果用户有邀请链接,就可以加入。
我还建议实现一些ttl机制,以防止组在一段时间后过期,并建议用户稍后不要加入会话。
最后,只需要做一些防御性的编码,允许每个组一次只能有一个管理员和一个用户,等等。
https://stackoverflow.com/questions/62516090
复制相似问题