1

重要提示:API 已更改 - 请先阅读: https ://developers.google.com/accounts/docs/AuthForInstalledApps

ClientLogin 已于 2012 年 4 月 20 日正式弃用。它将根据我们的弃用政策继续工作,但我们鼓励您尽快迁移到 OAuth 2.0。


我想构建两个应用程序客户端(一些 python/java 程序)和服务器(Google App Engine 应用程序),并通过从客户端到服务器的 google 帐户进行身份验证以获取一些秘密信息。

让我解释一下场景:

  1. 服务器有地址https://example.appspot.com
  2. 客户希望从https://example.appspot.com/restricted下载受限信息,因此在 app.yaml 中定义了这个 url 和 login: required。
  3. 客户使用某些 Google 帐户 example_login 和 example_password 来获取访问权限。

如何正确地从客户端向 Google App Engine 进行身份验证以访问https://example.appspot.com/restricted

4

1 回答 1

1

另一种无需登录的简单方法是使用 HMAC。您可以根据时间戳(使每个请求唯一)和一个秘密 MAC KEY 创建一个 MAC 签名。您的请求包含时间戳和 MAC 签名。服务器可以验证 MAC,因为它也有秘密的 MAC KEY。

此 Python 代码适用于双方(客户端和服务器)`:

import hmac, base64, hashlib

new_hmac = hmac.new(key=my_secret_MAC_KEY, msg=timestamp_in_request, digestmod=hashlib.sha256)
signature = base64.b64encode(new_hmac.digest()).decode()
if signature_in_request != signature : raise ValueError('access denied')

这适用于单个用户,因为您必须管理单个密钥。当您有很多用户时,客户端登录是一个更好的选择。

于 2012-10-03T22:55:22.970 回答