スマートフォンでのSNSアプリにおける認証やセッションの管理について

スマートフォンでのSNSアプリにおける認証やセッションの管理について 勉強の一環としてスマートフォンでのSNSの開発をしています。 スマートフォン側はネイティブで、サーバー側ではphpを使って主にDBに接続します。 例えばiPhoneでのfacebookやTwitterのアプリでは初回の起動時にログインをすると、 その後はユーザーがログアウト操作を行わない限り、 まるでずっとログインしっぱなしであるかのように認証部分はスキップし、自動的に最新のデータを取得しにいくような挙動をしますよね。 このような挙動を再現したいのですが、そのためにはアプリ内に(暗号化した)パスワードを保持しないことには難しいと思うのです。 アプリ起動時にセッションを確認し、サーバー側と一致しなければ、記憶したパスワードとユーザIDで勝手に再ログイン、新たにセッションを取得... といった流れをイメージしているのですが、このような方法は手法的、セキュリティ的に正解ですか? 誤りであれば正しい方法へのヒントを頂きたいです。 パスワードの管理やセッションについてまだ知識が浅いです。

補足

補足です。 きちんと書かなかった私が悪いのですが、 iPhoneではクッキーを使用したアプリは認められない方針になったようで、これは避けたいところであります。 また、ブラウザではないので、クッキーはどうなのでしょうか(その点は詳しくわかりませんが)。

iOS開発4,803閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

0

基本的にはクッキーを使います。 クッキーにハッシュ化したID情報などを入れておけばいいだけですね。 #IDと「認証済み」であることが分かればそれでいいので、パスワードを保持する必要はありません ガラケーなら、UIDなど契約者固有番号を使えばもっと安全なんですが、スマホはPCに近いのでそういったものは簡単には利用できませんからね。 ##補足分## ああゴメンナサイ、クライアント側はネイティブアプリでしたね。 なら何も難しいことはなく、クッキーと同等の機能をアプリに持たせればいいだけですね。 アプリが内部的に保存するなら、別にIDとパスワードをそのまま保管したって良いでしょう。 もちろん、ファイルに平文で保存しちゃったりするのはよろしくないので、何らかの暗号化くらいはすべきでしょうが、アプリが独自に保持するなら、アタックを受ける可能性は極めて低いので、ユーザの不正にさえ気をつければ大丈夫かと思います。 まあ、クッキーでやるときと同様に、IDから作られるハッシュ値みたいなものを保存させる形でももちろん良いですけどね。 ID/PASSをそのまま保存する形なら、サーバ側の作りは楽(普通のログイン処理と同様の処理で良い)ですね。 ハッシュ値にするなら、普通のログイン処理+ハッシュ値によるログイン処理を実装するのでちょい手間が増えます。 もっとも、さして大きな差があるわけじゃないですけどね。

ThanksImg質問者からのお礼コメント

ご回答から補足までありがとうございます。 イメージ通りのアプローチで良さそうで安心致しました。

お礼日時:2013/5/1 22:20