我可以将 html5 Websockets 与 Windows 域身份验证一起使用吗?
Posted
技术标签:
【中文标题】我可以将 html5 Websockets 与 Windows 域身份验证一起使用吗?【英文标题】:Can I use html5 Websockets with windows domain authentication? 【发布时间】:2017-02-01 20:11:55 【问题描述】:我们的设置是这样的:我们使用 Coldfusion 10 服务器,文件在本地 Intranet 上。用户使用域登录通过 https 访问任何文件。我对使用 html5 websockets 很感兴趣,但第一次尝试给了我一个错误,因为没有提供凭据。有没有解决的办法?如果没有,是否有针对这种情况的推荐技术?
用户确实在客户端登录。如果可能的话,我在这里真正想做的是在与服务器建立连接时传递这些凭据。
【问题讨论】:
您是否尝试使用 ColdFusion 获取任何凭据? 用户在客户端登录。我可以通过套接字提供这些吗? 【参考方案1】:您应该能够在提升到 Web 套接字读取之前将 authentication
标头提供给您的 Web 套接字服务器,并将其发送回标头以用于提升(第一帧),然后当浏览器连接时它应该具有它需要的身份验证。
如果您在页面中使用自定义身份验证 E.G 而不是 authentication
标头,您也可以通过将任何自定义标头传递给您的服务器来做到这一点。
或者要求您的网络客户端发送的第一件事是身份验证详细信息,如果他们不关闭对他们的套接字,这可能类似于username_hash.password_hash
。
【讨论】:
我会在这周晚些时候试一试,然后带着结果返回这里,但你是唯一提供帮助的人,所以无论哪种方式,我都会给你赏金。【参考方案2】:不要这样做。 您现在负责自己发送和加密身份验证凭据,绕过已经有效并经过测试的东西。
任何人都可以窥探未加密的 websocket 端口。将 HTTPs 用于 Intranet,使用稳定的解决方案,不要重新发明这个***,因为它会让你觉得很有趣。
几年后,一些同事将不得不维护这一点,并且必须弄清楚您的自制版本与普通浏览器身份验证等可靠版本的工作方式。
我的建议:把它留给浏览器和经过充分测试的冷融合库。
【讨论】:
据我所知,没有这样的 cf 库。使用cf10 和coldfusion websockets 甚至不能做wss。无论如何,Intranet 通过 https 并且套接字将在同一个网络上。我想知道 websockets 是否不适合我。 没有人可以窥探未加密的 websocket 服务器,因为除了localhost/127.0.0.1
之外,您不允许他们使用任何东西,否则他们必须使用使用 SSL 证书的WSS
,其次浏览器不支持身份验证WebSockets 你必须以某种形式实现它。
我的意思不是浏览器上下文,而是更全局的。使用一个简单的包捕获工具,我可以直接从电线上拉出那些,或者在未加密的 wifi 上凭空拉出。我的观点是:如果您发送凭据,请不要通过未加密的管道(如非 WSS 套接字)发送这些凭据。
@SchizoDuckie 这就是我所说的,Web Socket Specification 概述了在公共 IP 地址或 DNS 查找中它必须使用 WSS,因此您无法在不违反 SSL 证书的情况下对它们进行数据包嗅探,我知道是什么数据包嗅探已完成,最简单的示例是网络上的 MITM 攻击,由于 WSS 中使用的 SSL 加密,您将无法读取它,不可能 MITM 本地环回地址,因为它不会出去任何网络。以上是关于我可以将 html5 Websockets 与 Windows 域身份验证一起使用吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 HTML5 WebSockets 用于 Chrome 扩展
HTML5 Canvas 不画线。 WebSockets 共享画布板
用于 html、json 和 websockets 的自托管 Web 服务器所需的方向