我可以在前端使用后端的OAuth令牌吗?

时间:2014-02-27 01:58:00

标签: java javascript google-drive-api google-oauth

我刚刚浏览了Java中Google's DrEdit sample app的描述(source code)。它显示了如何编写一个简单的Drive应用程序并在后端处理授权。

这是一个很好的例子,但我注意到的最大缺点是,当用户想要从他的驱动器中选择一个文件时,要求用户再次登录(尽管之前授权该应用程序执行此操作)。这很不方便,所以我想避免这种情况。选择文件是使用Google Picker API完成的,该API仅在Javascript中可用。

因此,我想在我的后端和前端之间共享授权信息 - 我可以将后端的OAuth令牌传递给前端吗?如果是这样,是否有推荐的方法呢?

3 个答案:

答案 0 :(得分:1)

使用交叉身份来实现这一目标:

https://developers.google.com/accounts/docs/CrossClientAuth

答案 1 :(得分:1)

是的,这完全没问题。如@tydotg所描述的那样窥探客户端并不是一个问题,因为访问令牌就像可以窥探一样,无论它是在客户端还是在服务器上生成。

唯一真正的挑战是确保您只是将令牌下载到经过正确身份验证的用户。您可以使用许多方案来执行此操作,但例如: -

  1. 用户使用基于服务器的OAuth对您的应用进行身份验证。
  2. 服务器将用户ID或电子邮件存储在会话变量
  3. 当您的客户端请求令牌时,您使用会话用户生成令牌

答案 2 :(得分:0)

我确信你可以(我不太熟悉Java,但是在Rails中,这很容易),但是你不想这样做的原因是因为安全性。

服务器端的任何内容都非常安全,客户端无法访问。然而,客户端的任何东西都是公平的游戏。我可以检查元素,如果我知道我在寻找什么,我就可以获取OAuth令牌。