2016-07-25 15 views
2

私はこの問題についてよく分かりません。 アンドロイドアプリの2段階認証を作成しました。2段階認証 - それ以降のセッションでユーザーがまだ認証されていることを確認してください

  1. ユーザーは、サーバーは、ユーザーがコードを受信して​​認証することができ

  2. Twilio/PHPに基づいて)SMS経由で戻ってユーザーに認証コードを送信し
  3. HTTPSを介してサーバにアプリから自分の電話番号を送信します彼自身の上に サーバー

その時点で、ユーザーがコードが送信されたスマートフォンの認証された所有者であることを確認できます。

その後、ユーザーが電話機とそのアプリケーションを再起動した場合、このユーザーがまだ同じ認証済みユーザーであることを確認するにはどうすればよいですか。 認証コードに基づいて毎回サーバーに何らかの資格情報を送信する必要がありますか?これを行うには安全かつ適切な方法ですか?

ありがとうございます!

Dopser

+0

他のユーザーが電話を受けた場合、SMSで区別することはできません。 – Joshua

+0

各リクエストで電話番号を送信し、それが同じであればサーバ上で照合します。ユーザが認証されていない場合は、必要に応じて再度確認を求めます。 –

答えて

0

トークン数は電話だけでなく、サーバのデータベースの両方に格納される(クッキーに類似)を生成することができます。トークン番号は、別の番号を追跡する手間を軽減したい場合は、確認コードにすることもできます。

あなたはなどsharedpreferencesまたはsqliteのデータベースを使用して、デバイス上でこのトークン、あなたは両方のトークンが一致するかどうかを確認することができ、すべてのonCreate()インスタンスで

Storage options on Android

を保存することができます。

この方法で問題を解決できます。 すべての結果アクティビティに対して同じ処理を実行できます。

+0

完璧、ありがとうございます! :) 私の次のステップは、クライアントとサーバー側の同期トークンを持つトークンシステムになります。これは証明されたインターバルで変更されます。 – Dopser

+0

私はGoogle Firebaseを使用してアプリケーションからの変更を開始します。数分の1秒以内に、変更がアプリケーションに反映されます。 パスワードが変更されたり、トークンがサーバーから削除されたりすると、ユーザーをログアウトさせるブロードキャスト受信者を作成できます。 また、Google Firebaseでは、ハートビートが非常に少なく、ユーザーがオフラインのときに要求がスタックされます。非常に役立つ私はあなたに言う.. **最も重要なことは、正しい答えをマークすることを忘れないことです。私は50ポイントに達するために票を集めていますので、私はコメントを投稿することができます:P ** –

+0

ありがとうございます:D – Dopser

0

ユーザーは、各リクエストでアクセストークンを送信する必要があります。

フローをOAuthトークン認証にマップできるため、OAuthフローを検討する必要があります。ここをクリックhttp://oauth.net/2/

また、トークン/コードの有効性についても考慮する必要があります。

これが役に立ちます。

+0

こんにちは、ありがとう!私はOAuthに慣れていませんが、私の目では、ユーザパスワード自体を使わずにサービス間の認証された通信を保証する適切な方法のようです。かなり良いですね! – Dopser

関連する問題