Androidアプリケーション内で使用するユーザー名とパスワードを保存したい場合、それを行うための最良の方法は何ですか?それは設定画面からですか(ただし、ユーザーがこれを見逃した場合はどうなりますか)、またはダイアログボックスをポップアップしてユーザーに資格情報を要求しますか?もしそうなら、私はアプリケーションの状態を維持する必要があります。どうすればいいですか?
Androidアプリケーション内で使用するユーザー名とパスワードを保存したい場合、それを行うための最良の方法は何ですか?それは設定画面からですか(ただし、ユーザーがこれを見逃した場合はどうなりますか)、またはダイアログボックスをポップアップしてユーザーに資格情報を要求しますか?もしそうなら、私はアプリケーションの状態を維持する必要があります。どうすればいいですか?
回答:
私が見たほとんどのAndroidおよびiPhoneアプリは、初期画面またはダイアログボックスを使用して認証情報を要求します。ユーザーが頻繁に名前/パスワードを再入力しなければならないのは面倒なので、その情報を保存することは、ユーザビリティの観点から理にかなっています。
(Android開発ガイド)からのアドバイスは次のとおりです。
一般に、ユーザーの資格情報を要求する頻度を最小限に抑えることをお勧めします。これにより、フィッシング攻撃がより目立ち、成功する可能性が低くなります。代わりに、認証トークンを使用して更新します。
可能であれば、ユーザー名とパスワードをデバイスに保存しないでください。代わりに、ユーザーから提供されたユーザー名とパスワードを使用して初期認証を実行し、その後、有効期間が短いサービス固有の承認トークンを使用します。
資格情報を保存するには、AccountMangerの使用が最適です。SampleSyncAdapterは、それを使用する方法の例を提供します。
何らかの理由でこれが選択肢にない場合は、設定メカニズムを使用して資格情報の永続化にフォールバックできます。他のアプリケーションは設定にアクセスできないため、ユーザーの情報は簡単には公開されません。
AccountManager
(遠回しに私の答えどおり、とミゲルの@を)し、誰かがあなたのGSM携帯電話のホールドを取得し、それが保存されている資格情報が無効になりますように、彼らは、あなたのアカウントへのアクセス権を持っているあなたのSIMを使用して維持する必要がありますSIMが変更されたとき。
Android AccountManagerを使用する必要があります。このシナリオ用に作成されています。少し面倒ですが、SIMカードが変更されるとローカル認証情報が無効になるため、誰かが携帯電話をスワイプして新しいSIMを入れても、認証情報が侵害されることはありません。
これにより、ユーザーはデバイスにあるアカウントの保存された資格情報に、すべて1か所からすばやく簡単にアクセス(および削除)することができます。
SampleSyncAdapter(前述の@Miguelと同様)は、保存されたアカウント資格情報を利用する例です。
私はあなたの資格情報を保護するための最良の方法は、ルート化されていないデバイスでは簡単に利用できなかった暗号化されたパスワードをaccount.dbファイルに格納することを最初に考えることであると思いますそれ。
他のオプションは、Gmailのようにすべての認証を行うことです。Gmailサーバーでの最初の認証の後。パスワードの場合に使用される認証トークンを取得しました。このトークンはプレーンテキストで格納されます。サーバーからパスワードを変更した場合、このトークンはfalseになる可能性があります。
最後のオプションとして、2要素認証を有効にし、デバイスにデバイス固有のパスワードを作成することをお勧めします。デバイスを紛失した後は、そのデバイスを無効にするだけです。
見てみましょうAndroidアプリケーションに格納し、ユーザーの設定に最も適切な方法は何あなたがSharedPreferencesでクリアテキストとしてパスワードを保存する心配している場合を。
SDKからSampleSyncAdapterサンプルを確認することもできます。それはあなたを助けるかもしれません。
android-developersからのこの投稿をご覧ください。Androidアプリに保存されているデータのセキュリティを強化するのに役立ちます。
新しい(Android 6.0)指紋ハードウェアとAPIを使用すると、この githubサンプルアプリケーションと同じように実行できます。
これらはあなたの隠された情報を壊すために難易度の順にランク付けされています。
クリアテキストで保存
対称鍵を使用して暗号化されたストア
Androidキーストアの使用
非対称キーを使用して暗号化されたストア
出典:Androidアプリでパスワードを保存するのに最適な場所はどこですか
キーストア自体は、ユーザー自身のロック画面のピン/パスワードを使用して暗号化されるため、デバイス画面がロックされている場合、キーストアは使用できません。アプリケーションのシークレットにアクセスする必要のあるバックグラウンドサービスがある場合は、このことを覚えておいてください。
http://nelenkov.blogspot.com/2012/05/storing-application-secrets-in-androids.htmlの情報はかなり実用的ですが、「uses-hidden-android-apis」ベースのアプローチです。資格情報/パスワードをデバイスにローカルに保存することを本当に回避できない場合に検討する必要があります。
https://gist.github.com/kbsriram/5503519で、そのアイデアのクリーンアップされた要点も作成しました。