如何使用Google帐户从客户端应用程序登录到Google App Engine服务器?

问题描述 投票:1回答:1

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

自2012年4月20日起,ClientLogin已被正式弃用。根据我们的弃用政策,它将继续起作用,但是我们建议您尽快迁移到OAuth 2.0。


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

让我解释一下情况:

  1. 服务器的地址为https://example.appspot.com
  2. 客户端希望从https://example.appspot.com/restricted下载受限制的信息,因此已定义此URL并登录:app.yaml中为必需。
  3. 客户使用一些Google帐户example_login和example_password获得访问权限。

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

google-app-engine authentication google-account
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')

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

© www.soinside.com 2019 - 2024. All rights reserved.