使用KONG API网关的cookie进行JWT身份验证

时间:2017-09-18 13:16:49

标签: api jwt lumen kong api-gateway

我们正在使用带有JWT身份验证插件的Kong API网关实现一个示例应用程序。

如此thread中所述,有两种方法可以在浏览器中存储JWT。网络存储或cookie。但是,Web存储(即会话存储和本地存储)可能容易受到跨站点脚本攻击(XSS)的攻击。所以其他选择是cookie。 (虽然应该注意CSRF)

我有两个问题,

  1. 如果我们使用网络存储来存储JWT,那么有什么方法可以阻止XSS。如果是,那么如果在新标签页中打开同一页面或重新加载同一页面,它将如何工作?

  2. 使用Cookie :我们可以在请求中发送Cookie。但是,仅当JWT 设置在标题Authorisation: Bearer token)上并且未使用Cookie进行身份验证时,KONG才会对终结点网址进行身份验证。有没有办法验证使用KONG API网关在cookie中设置的JWT?

3 个答案:

答案 0 :(得分:2)

将JWT存储在webStorage中没有任何问题,除非您在JWT中存储敏感数据(但您永远不应该这样做,因为您可以轻松解码它)。关键是你的令牌共享一个秘密,只有你的服务器知道(这才是安全的),你应该只设置一个到期时间,以使它更安全。

不,你不能在cookie中传递JWT令牌,它只在头文件中(这里是授权),我不知道KONG API,但他们不应该允许!

(关于JWT的参考是here

答案 1 :(得分:1)

为了添加@ antoine2vey回答,

看起来您的页面应用程序是通过" /"中的受保护API提供的。 (斜杠)资源。我建议您可以从未受保护的" /"中获取页面内容。 (斜杠)资源,然后运行javascript代码将有权访问cookie,并能够执行对受保护资源的请求,传递JWT令牌在标题中Kong将能够为您验证。

这有意义吗?

答案 2 :(得分:0)

实施基于Cookie的身份验证。 https://github.com/Kong/kong/pull/2973