2017-07-11 3 views
1

匿名ユーザーがHTTPSを介してサーバーにリクエストを送信できるAndroidアプリケーションを開発したいと考えています。誰もがHTPPリクエストを作成して送信できるので、リクエストが私のアプリから来ていることを確認する必要があります。これは私のアプリでは非常に重要です。Androidアプリケーションのリクエストを認証する

私はGCMトークンについて読んでいますが、私の問題で私が助けてくれるかどうかわかりません。

秘密鍵をコードに隠さずに(アプリからの)リクエストを認証する方法はありますか?(Androidの秘密は非常に簡単です)

ありがとうございました

+0

私はまた、プレイストアからモバイルアプリの支払い領収書を受け取り、Googleの連絡先であるGoogleに送信することも考えていました。これは可能ですか? –

答えて

0

私は、このガイドに従った後、この問題を解決する方法を考え出し:https://android-developers.googleblog.com/2013/01/verifying-back-end-calls-from-android.html

を基本的に、あなたはGoogleAuthUtilクラスを使用し、グーグルを介して利用可能な「IDトークン」と呼ばれる文字列を取得するには、サービスを再生します。トークンをバックエンドに送信すると、バックエンドはそのトークンを使用して、それを送信したアプリと誰がアプリを使用していたかを素早く安価に確認することができます。

あなたのサーバーがあなたのAndroidアプリからトークンを受け取ったとき、それを確認することは本当に重要です。これには2つのステップが必要です:

  1. 本当にGoogleが署名していることを確認してください。
  2. 本当にあなたのためのものであることを確認してください。

ありがとうございます。

0

あなたのユーザーには、いつでも一意のトークンを生成できます。そのトークンをリクエストのヘッダーに追加し、バックエンドで確認します。

+0

ヘッダーにトークンを生成すると、サーバーでそれをどのように検証できますか?ユーザーが匿名であると仮定してIm –

+0

私がこれを実装する方法は、ユーザーがそのユーザーのトークンを生成し、アプリケーションからサーバーに要求するたびにトークンを検証することです。 – nullvoid

+0

しかし、この場合誰でもログインできます(たとえば、カールを使用してサーバーに要求を送信します)。サーバーはトークンで返信します。 –

0
  1. サーバーは、あなたのアプリのユーザーごとに固有のPINを生成することができ、それは、あなたのアプリに送信し、アプリ上に表示されます。

  2. ユーザーは、匿名ユーザーであっても、応答を送信する前に同じPINを入力することになっています。次に、このPINを要求が送信され、サーバは同じアプリからのものであることを確認できます。

  3. また、各PINの有効期限が間違っていないように設定でき、セッションの最後に生成された最新のPINが常に使用されます。

さらに1つの質問に答えて1つの質問:このPINがアプリに送信され、偽のアプリではないことを確認する方法ですか?

これは次のようになります。これはすべてのアプリがアンドロイドデバイスにインストールされているときにユニークなapplicationidを取得します。インストール時に、このアプリケーションIDは慎重にサーバーに登録できます。このようにして、すべてのAPI呼び出しが登録されたアプリから来るようにします。

関連する問題