0

Google ウォレット (アプリ内購入) を使用して、Web ベースのアプリケーションのサブスクリプションを販売する予定です。ウォレットは、サーバーが生成する (JWT に基づいて)サーバーにコールバックします。

コールバックの実装の一環として、Google ウォレット以外の誰もがポスト バック ハンドラを正常に呼び出せないようにする必要があります。

私にできることは、販売者 ID と販売者データ (顧客に関する情報などを含む可能性がある) を信頼して、ポストバック コールが正当であることを確認することだけです。

私の現在の計画は、売り手のデータ フィールドを暗号化することです。うまくいけば、私のアプリケーションだけがそのフィールドのデータを読み取ることができます。ポストバックハンドラーが可能な限り安全であることを確認するために検討する価値がある他のベスト プラクティス/考えはありますか。

このアプリケーションは、Apache (もちろん SSL) の下で実行される Python WSGI アプリです。

御時間ありがとうございます。

4

1 に答える 1

1

ポストバックJWTはセラーシークレットで署名されていることに注意してください。あなたとGoogleだけが売り手の秘密を知っています。ポストバックJWTがセラーシークレットで署名されていることを確認することで、ポストバックJWTの信頼性を確認します(詳細は以下を参照)。

また、ポストバックJWTには、注文IDも含まれているため、サーバーによって生成された注文JWTとは異なることに注意してください。ハッカーは、セラーシークレットを知らない限り、注文JWTを再利用して有効なポストバックJWTを生成することはできません。

ポストバックJWTを受信したら、署名を確認することで、Googleから送信されたことを確認できます。JWTは「Header.Claims.Signature」で構成されています。「署名」は、セラーシークレットを使用したSHA-256アルゴリズムを使用して生成されます。

詳細とコード例については、以下を参照してください。

JWT仕様: http ://self-issued.info/docs/draft-ietf-oauth-json-web-token.html#anchor4

Pythonサンプル: https ://developers.google.com/commerce/wallet/digital/docs/samples#iap-py

JWTデコーダー: https ://developers.google.com/commerce/wallet/digital/docs/jwtdecoder

于 2013-03-09T19:18:09.433 に答える