0

我正在尝试为我的 google 网络应用程序实现 Oauth。我正在使用 POC,它工作正常,但我很困惑,不确定如何才能达到最佳效果。

我正在为 Oauth 使用 scribe java API。

这是我正在执行的步骤。

  1. 从 Google 获取请求令牌。
  2. 将用户重定向到 Google 以对其进行身份验证并授权我的服务访问他/她的一些详细信息。
  3. 通过提供 google 提供的请求令牌和验证码从 google 获取 Access Toekn。
  4. 谷歌提供访问令牌后访问用户信息。

现在我的主要困惑是在第 3 步,因为我正在开发一个 Web 应用程序,所以这将是一个 2 步过程。

  1. 将用户重定向到谷歌
  2. 处理回谷歌重定向。

为了获得访问令牌,我需要提供与步骤 1 相同的请求令牌,否则我的请求被用户拒绝。请求令牌包含两件事

  1. Toekn --> 它基于注册的应用程序,所以不是问题
  2. Secret-->这始终是一个随机字符串,因此在请求访问令牌时应该相同

这意味着我需要将这个秘密存储在我的会话中或某个地方,以便当用户被重定向回我的应用程序时我可以访问这个秘密。

我的困惑是,因为为了将它保存在会话中,我必须创建一个唯一的密钥和某种方式来在另一个操作类中访问它,这将处理谷歌重定向回来我怎么能实现这一点,因为在给定的时间这么多用户可以要求使用谷歌登录。

在这方面的任何帮助将不胜感激。

提前致谢

4

1 回答 1

1

当您收到request token+token secret时,将request token用作会话的唯一键来存储令牌信息。在授权过程之后,在回调 url 中,您可以访问request token(它是传递给回调 url 的参数之一)。使用此参数作为会话密钥,您可以从会话中恢复令牌信息,包括token secret,并使用它来签署您更改request tokenfor的请求access token。收到后access token,将返回一个新token secret的,您可以从会话中删除旧的。

我怎么能做到这一点,因为在给定的时间有这么多用户可以要求使用谷歌登录

这没有任何问题,因为对于您网站上的每个用户,您都会获得不同的request token.

于 2011-11-24T18:24:54.933 回答