2012-01-04 11 views
0

私はこのAndroidアプリケーションを開発しています。ユーザーはWebサーバー上でSQLiteデータベースを最新バージョンに更新できます。ユーザーがアプリケーション上のボタンをクリックし、最新バージョンのデータベースがAndroidにダウンロードされるまではすべて正常に動作しています。PHPアプリケーション用のAndroidアプリケーションを認証する方法はありませんか?

これらのユーザーはアプリケーションをインストールするだけで、個々のユーザーを認証する必要はありません(ユーザーにはユーザー名/パスワードはありません)。すなわち、誰もが同じデータベースを使用しています。データはすべてユーザー固有のものではありません。また、双方向の同期を設定する必要はありません。

問題は、誰もがデータベースにアクセス(ダウンロード)できることです。誰かがデータベースを手動でダウンロードするのを防ぐ必要があります。データベースは、PHPのApache Webサーバーでホストされます。 SQLiteデータベース(更新ファイル)へのアクセスを制御するPHPコードを実装できます。

Android携帯で作成したアプリケーションをphpで認証する方法はありません。このアプリケーションのユーザーだけが自分の電話機に直接データベースをダウンロードできます。

P.S. ダウンロード要求を認証できるアプリケーションにパスワードをハードコードすることを検討しました。しかし、パスワードは、静的にハードコードされた文字列になります。タイムゾーンのユーザーまたは同期外の時計を使用しているユーザーはデータベースを更新できないため、パスワード回転アルゴリズムを使用することには注意が必要です。

答えて

2

あなたは焼き直しや資格としてそれを使用するすべての今して、Webサービスからのランダムなキーを取得し、その後、携帯電話のアプリケーションおよびサーバー内で共有秘密鍵を格納することができます:

Android Phone       Server 
--------------------------------------------------------------------- 
"SharedSecret"       "SharedSecret" 
getRandomKey()     <---- "This is some randomKey currently valid" 

Authentication: 
sha256(RandomKey + SharedSecret) <---> sha256(RandomKey + SharedSecret) 
関連する問題