在AJAX调用中保护JWT令牌

时间:2015-06-22 03:39:19

标签: security jwt

假设站点A有一段javascript,它对站点B上的端点进行ajax调用。站点A使用从站点B生成的JWT来验证请求。

用户是否能够通过检查(例如Chrome)请求及其标题来获取JWT?然后他可以使用那个JWT并提出自己的要求。

如果是这样,在浏览器中进行ajax调用时如何使用JWT,而不是在javascript文件中使用纯文本?

例如

$.ajax({
  type:"GET",
  beforeSend: function (request)
  {
    request.setRequestHeader("Authorization", "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2p3dC1pZHAuZXhhbXBsZS5jb20iLCJzdWIiOiJtYWlsdG86bWlrZUBleGFtcGxlLmNvbSIsIm5iZiI6MTQzNDk0NDIwMywiZXhwIjoxNDM0OTQ3ODAzLCJpYXQiOjE0MzQ5NDQyMDMsImp0aSI6ImlkMTIzNDU2IiwidHlwIjoiaHR0cHM6Ly9leGFtcGxlLmNvbS9yZWdpc3RlciJ9.UPFXFOgvmXUenz4mtJkzSEiBc_k6hdytTbxIrDDET2o");
  },
  url: "https://siteb.com/api/articles/",
  success: function(data) {
    // do something with data
  }
});

1 个答案:

答案 0 :(得分:0)

是的,用户可以在他的浏览器上访问JWT令牌 - 这与cookie没有什么不同。

对于 B用户授权您的应用A代表他访问B 的情况,无需保护用户自己的JWT令牌 - 只需来自第三方。

如果您想象一个服务B以某种方式授权您的应用程序A访问它的场景,那么JWT令牌永远不应该转到浏览器而是留在A的服务器端。您的AJAX调用应该转到A,它与之通信B使用适当的JWT。