假设站点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
}
});
答案 0 :(得分:0)
是的,用户可以在他的浏览器上访问JWT令牌 - 这与cookie没有什么不同。
对于 B用户授权您的应用A代表他访问B 的情况,无需保护用户自己的JWT令牌 - 只需来自第三方。
如果您想象一个服务B以某种方式授权您的应用程序A访问它的场景,那么JWT令牌永远不应该转到浏览器而是留在A的服务器端。您的AJAX调用应该转到A,它与之通信B使用适当的JWT。