0

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

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

我有两个问题,

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

  2. 使用 cookie:我们能够在请求中发送 cookie。但是,只有在标头( )上设置Authorisation: Bearer token了 JWT并且不使用 cookie 进行身份验证时,KONG 才会对端点 URL进行身份验证。有什么方法可以验证使用 KONG API Gateway 在 cookie 中设置的 JWT 吗?

4

3 回答 3

2

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

不,您不能在 cookie 中传递 JWT 令牌,它仅在标头中(此处为授权),我不知道 KONG API,但他们不应该允许这样做!

(关于 JWT 的参考在这里

于 2017-09-18T13:24:55.703 回答
1

为了添加到@antoine2vey 答案,

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

这有意义吗?

于 2017-09-26T23:19:14.623 回答
0

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

于 2017-11-08T07:21:08.427 回答