是的,您可以使用OAuth来保护WebSocket连接。Kaazing WebSocket Gateway拥有一种优雅的架构,可使用各种方法(基于令牌、基于HTTP或基于cookie)进行身份验证和授权。
此外,它以一种安全的方式完成,适用于Web上可能涉及不受信任客户端的情况。(或者至少,您应该始终假设您正在处理不受信任的客户端。)
当客户端尝试WebSocket连接时,网关将接收请求。如果已配置特定服务(即URL)受到保护,则会向客户端发出挑战。
在接收到挑战后,客户端需要提供一个令牌(假设在这种情况下已经进行了配置)。如果客户端已经拥有令牌——因为他们以前已经登录到其他系统或网页——那就太好了。如果没有,则必须获取一个。这完全取决于您选择的安全性。在这种情况下,它会联系OAuth令牌提供者以获取令牌。这可能意味着用户需要提供凭据。
一旦客户端获得令牌,它将其作为响应发送到网关以回应挑战。网关支持标准的JAAS体系结构,因此您可以插入登录模块以执行必要的身份验证。在这种情况下,它可能会将令牌发送到令牌提供程序,以确定它是否是有效的令牌。
如果是有效的,则WebSocket连接将打开并可以继续。如果不是,则请求将被拒绝,并关闭连接。
这样做的好处是保护您的后端应用程序 - 只有有效用户才能通过网关。此外,由于Kaazing WebSocket Gateway可以存在于DMZ中,未经身份验证的用户甚至不会进入您主要防火墙内的受信任网络。他们在外面快速失败。
这种体系结构很强大,因为无论您选择了什么安全框架,Kaazing的网关都将插入其中,而不是强加自己的安全机制。此外,在OAUth或OAuth2的情况下,它不需要理解或解码令牌。令牌提供程序是唯一需要理解它的人。但是,如果您的令牌提供程序想要指定会话的持续时间,则可以将其与令牌一起包含,网关将予以尊重。
如果基于浏览器的应用程序不安全,我可以接受,但我希望确保至少基于Web的应用程序有一种安全的方式来访问websocket。
通过正确的架构和实现,可以使基于Web和基于浏览器的应用程序变得安全。在Kaazing,我们始终假定您正在处理Web上的不受信任的客户端,并相应地构建我们的架构。
以下是文档的几个部分,具有高级描述:
-
身份验证期间发生了什么
-
网关如何处理身份验证和授权
问候,
Robin
Kaazing产品经理