是否有可能以固定的WebSocket API的使用OAuth 2.0?(Is it possible

2019-06-23 23:36发布

我采取一个OAuth提供者,以确保不同的基于Web的API。 最头痛的是给我的WebSockets的固定通过OAuth的。

这是可以做到完全安全的,因为在一个浏览器中设置一个客户端?

什么是风险,如果它是在一个浏览器相比,与服务器的Web应用程序?

我想用两方模式OAuth来限制WebSocket的连接,所以只有注册用户才能重建被拒绝了WebSocket连接的API。 由于WebSocket连接总是(!)的客户端(从浏览器)成立,它可以保护的accessToken被盗和被滥用?
在这一点上,来自Web的应用客户端APPART设置一个基于浏览器的客户端的唯一的事情就是网址。

如果基于浏览器的应用程序是不安全的,我可以忍受这一点,但我要确保至少基于Web的应用程序需要访问的WebSocket的安全方式。

但是,在这一点上我问自己,如果需要的accessToken可言,因为不是我可以只使用原点-URI作为唯一的安全机制。

Answer 1:

是的,你可以使用OAuth保护您的WebSocket连接。 的Kaazing WebSocket的网关具有使用多种方法用于认证和授权的优雅架构(基于令牌的,基于HTTP的,或基于cookie)。

而且它的方式,结束了在那里你可以处理不可信的客户端网络安全进行。 (或者至少,你应该总是假设你正在处理不可信的客户端。)

当客户端尝试一个WebSocket连接,网关接收请求。 如果特定的服务(即URL)已被配置为被保护,客户端将受到挑战。

在接收到客户端需要然后提供一个令牌的挑战(假设这是什么在这种情况下被设置)。 如果客户端已经有令牌 - 因为他们之前已经签署了一些其他系统或网页 - 那也不错。 如果没有则必须获得一个。 这完全取决于你所选择的安全性。 在这种情况下,接触OAuth令牌提供者获得令牌。 这可能意味着不必提供凭据的用户。

一旦客户端有一个令牌将其发送给网关作为对挑战的回应。 该网关支持标准JAAS架构,因此您可以在登录模块插入进行必要的身份验证。 在这种情况下,它可以发送令牌,令牌供应商,以确定它是否是一个有效的令牌。

如果是,则WebSocket连接被打开,可以继续。 如果不是,请求被拒绝,并关闭连接。

这对于保护您的后端应用程序的好处 - 只有合法的用户将通过网关。 此外,由于的Kaazing WebSocket的网关可以住在DMZ中,未通过验证的用户从来没有您的主防火墙内进入可信网络。 他们未能迅速在外面。

这种架构是强大,因为它并不重要,你选择什么样的安全框架,的Kaazing的网关将插上它,而不是强加在你自己的安全机制。 此外,在OAuth的或OAuth2用户的情况下,并不需要了解或解码的令牌。 令牌提供者是需要了解它的唯一一个。 但是,如果您的令牌供应商希望为会话指定的持续时间,可包含与令牌一起和网关将履行它。

如果基于浏览器的应用程序是不安全的,我可以忍受这一点,但我要确保至少基于Web的应用程序需要访问的WebSocket的安全方式。

基于Web和基于浏览器的应用程序可以进行安全用正确的架构和实现。 在的Kaazing我们始终认为你是在网络上处理不可信的客户端的假设下操作,并相应地构建我们的架构。

下面是有一个高层次的描述文档的几个部分:

  • 会发生什么认证过程中
  • 身份验证和授权如何与网关工作

问候,罗宾产品经理的Kaazing



Answer 2:

作为认证发放的访问令牌之前执行的凭证补助是否安全。 这就是他们说的规范之外。 所以依赖于任何身份验证机制,你决定把在响应发放的令牌给证书授权前。

现在,让我们假设你已经建立了一个很好的安全的方式来获得您的凭据补助,或通过定期的OAuth2请求得到一个访问令牌到浏览器中。

下的OAuth2规范你可以自由地MAC-消化部分,加密部分或在任何数量的方式该令牌内保护数据。 访问令牌的浏览器的安全性取决于它所包含的信息 - 很多时候,人们设计,它包含最少的信息(用户ID,过期时间,版本,消化)并使其自可验证您的服务器(因此摘要) 。 令牌的内容几乎是任意的。 有些系统甚至给进出“码”作为代理的令牌。

现在让我们假设你有一个受保护的“安全格式”访问令牌,具有时间限制。 让我们考虑一个真实的例子:Facebook和他们的OAuth2实施。 无论是一个完整的访问令牌或者服务器端证书检索访问代码(每个时间限制),你可以从浏览器发送的令牌(或代码)来安全地访问到WebSocket,使用的Kaazing网关。

有一个问题我已经从在Kaazing的网关,可以带走的东西是真正的oauth2不保证任何事情 - 你可以自由地分发任意形式的访问令牌。 这是一个好主意,以确保您的凭据的身份验证方案,该格式的access_token和寿命的access_token都是很好的决策 - 那么你得到的安全性。

该网关的Kaazing会让你发送任意令牌到网关,并与你写来验证他们JAAS登录模块验证它们。 这一制度的安全性是由你和决策。

问候,

史蒂芬·阿特金森

网关服务器开发者,的Kaazing



文章来源: Is it possible to secure WebSocket APIs with OAuth 2.0?