攻击者可以使用返回到AngularJS应用程序的访问令牌吗?

问题描述:

我们正在研究集成keycloak以保护由nodeJS应用程序提供服务的前端AngularJS应用程序,并且还向此服务器发出API请求。攻击者可以使用返回到AngularJS应用程序的访问令牌吗?

观看了一些教程后,我们看到我们需要使用AngularJS应用程序的javascript适配器来处理用户认证流程,然后使用仅承载者策略来保护我们的nodeJS应用程序,确保对我们的Node应用程序的angularJS传出请求包含带有不记名令牌值的Auth头。

我有一个问题\关心的方式,令牌被送回到客户端,因为我可以看到它被保存到一个cookie,我认为是JavaScript的适配器读取从我们为了能够将Auth头文件写入角度应用的后续请求中。

我的问题是,这个标记值是否可以轻松地从浏览器cookie中读取,并被试图发出api请求的攻击者恶意使用?

我是否认为这是非常不可能的,因为攻击者需要知道存储在nodeJS端的秘密?

您不需要知道客户端密钥就可以使用访问令牌。该秘密仅用于发布访问令牌。如果有人拥有未到期的访问令牌,那么有人将能够使用您的身份,直到令牌过期。但是,您可以使用https,httponly cookie将被盗访问令牌的可能性降至最低。此外,您可以使用短令牌寿命(例如5分钟)。但是你需要实现刷新令牌;否则,只要访问令牌过期,用户就需要重新登录。

我认为正确的实现并不是微不足道的。我建议使用一些反向验证代理,它将在您的应用程序前处理授权和验证。提示:https://github.com/gambol99/keycloak-proxy