1

重要: API が変更されました - 最初にこちらをお読みください: https://developers.google.com/accounts/docs/AuthForInstalledApps

ClientLogin は 2012 年 4 月 20 日に正式に廃止されました。廃止ポリシーに従って引き続き機能しますが、できるだけ早く OAuth 2.0 に移行することをお勧めします。


2 つのアプリケーション クライアント (Python/Java プログラム) とサーバー (Google App Engine アプリケーション) を構築し、クライアントからサーバーへの Google アカウントで認証して秘密情報を取得したいと考えています。

シナリオを説明しましょう:

  1. サーバーのアドレスはhttps://example.appspot.comです。
  2. クライアントは制限付きの情報をhttps://example.appspot.com/restrictedからダウンロードする必要があるため、この URL が定義されており、app.yaml で login: が必要です。
  3. クライアントは、Google アカウントの example_login と example_password を使用してアクセスします。

https://example.appspot.com/restrictedへのアクセスを取得するために、クライアントから Google App Engine への認証を適切に行うにはどうすればよいですか?

4

1 に答える 1

1

ログインせずに行うもう 1 つの簡単な方法は、HMAC を使用することです。タイムスタンプ (すべての要求を一意にするため) と秘密の MAC KEY に基づいて MAC 署名を作成します。要求には、タイムスタンプと MAC 署名が含まれています。サーバーは秘密の MAC KEY も持っているため、MAC を検証できます。

この 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 に答える