2012-03-21 19 views
2

PHP Webサーバーと通信するAndroidアプリを作成しました。彼らは両方ともJSONをお互いに送ります。私のアプリはほぼ完成ですが、残っていることは1つあります:認証。AndroidアプリでPHPセッションを使用する必要がありますか?

Android SharedPreferencesにユーザーのユーザー名とパスワードが格納されるため、ユーザーは毎回ユーザー名とパスワードを入力する必要はないので、PHPセッションを使用する必要はありますか?

リクエストごとにHTTP POSTヘッダーでユーザー名とパスワードを送信するだけで、SSLを使用することができます。これで十分ですか?暗号化されたSSLペイロードが毎回異なるように、saltとして使用するだけでランダムな値を追加する 'random'というヘッダーに余分なフィールドを追加することができます。

セッションを使用したくない理由は、AndroidアプリがCookieを処理する必要があるか、セッションIDのストレージを管理する必要があるためです。

上記の方法を使用することに重大な欠点がある場合は、セッションを使用するよりも嬉しいです。

答えて

0

あなたは今あなたが持っているものでうまくいくと思います。ユーザー情報が確実に転送されることを確認している限り。塩は良い考えです。それは実際にあなたがそれをどれくらい安全にしているかによります。

1

個人的には、毎回リクエストでユーザー名とパスワードを送信することに反対しています。あなたができることの1つは、ログイン時に一意のIDを生成し、それをサーバー上のデータベースに格納し、ユーザー名とパスワードの代わりにそのIDを渡すだけです。

+0

:おっと、ほとんどのドキュメントのリンクをお忘れですか? – jtnire

0

すべてのリクエストでアカウントの資格情報を送信することは非常に悪い習慣です。 私はGoogle OAuth2 APIを使用するより良い方法だと思います - VERYローカルアカウントデータベースより簡単で安全です。あなたはそのオプションを考えましたか?

+0

通信が暗号化されているのはなぜですか? – jtnire

+0

ユーザーは毎回SSL接続を覚えることができません。限られた能力のUIのアンドロイドデバイスの欠点。 MITM攻撃を可能にします。 – Vladimir

+0

申し訳ありませんが、「ユーザーは毎回SSL接続を覚えていません。私のAndroid Appは、無効な/自己署名証明書が使用されたときに例外をスローします。 – jtnire

0

私はGoogleがこれを多く考えていると思うので、彼らのやり方に似た何かをすることは悪い考えではないでしょう。あなたは、彼らが

  • ログインプロセスのやり方を見れば、すなわちhttps://accounts.google.com/o/oauth2/auth

、特にその

  • トークンfreshining、すなわちhttps://accounts.google.com/o/oauth2/token

それはのように感じるかもしれませんしかし、あなたは自分の実装にとって貴重かもしれないいくつかのアイデアを捨てるかもしれませんn。

EDIT:だから一種の永久的なセッションIDのようなhttps://developers.google.com/accounts/docs/OAuth2

関連する問題