我对OAuth2还很陌生,遇到了一个问题困扰我,即使做了研究仍然无法理解。
在JS客户端使用OAuth2的困难之处在于无法存储客户端密钥,因为它将在浏览器中广泛访问。例如,在这个SO问题中,最高评分的评论说:
“我认为tokenSecret和consumerSekret参数应该是秘密的!当它们被下载到浏览器时,它们如何保持秘密?!!!”
那么像hello.js或oauth.io这样的客户端OAuth2框架如何解决这个问题?我知道它们使用服务器端代理(知道ID和密钥)来进行请求,但是客户端JS代码仍然需要以某种方式告诉代理它是谁。那么有什么方法可以防止任何人从我的网站上获取JS代码并代表我与代理通信吗?
我还发现了Google APIs Client Library for JavaScript。据我所知,客户端代码在那里不传递密钥。我是否正确地理解了它们通过具有预定义的OAuth响应地址来管理这一点?(以便令牌始终通过预定义的HTTP地址返回)。因此,即使有人试图通过使用我的ID冒充我的网站,令牌仍将返回到我的网站上?
也许我在混淆几个不同的主题,任何关于这个问题的帮助都将不胜感激。