現在、RESTful APIを使用したモバイルアプリケーション通信に(好ましくは単純な)認証システムを実装することが義務づけられています。バックエンドには、ユーザーの電話番号で識別されるユーザー固有のデータがあります。私は、一般的なセキュリティ、そこにあるさまざまな方法、そして彼らが働く仕組みがなぜ機能するのかについて、より多くのことを理解しようとしています。モバイルアプリケーションによるAPI認証(SMSによる)
私は、単純な認証システムを考えた:
- クライアントが自分の電話番号と生成されたGUIDを含んAPIに検証要求を送信します。
- サーバーは、確認コードを使用して電話番号にSMSメッセージを送信します。
- クライアントは、固有のGUID、電話番号、確認コードを送信して、端末を確認します。
- サーバーは、クライアントがさらなる要求に使用できる何らかの種類のアクセストークンで応答します。
私は、次の質問がある:
は、このアプローチに大きな欠陥がありますか? HTTPSを使用していると仮定すると、暗号化されていないとデータを送信するのに十分な安全性がありますか? Googleのアプリだけがトークンを読むことができるように、トークンにモバイルデバイスに安全に保存することができますか? それ以外のことは考えていませんか?
携帯電話が盗まれたり他の方法で侵害された場合、データはもはや安全ではありませんが、それは克服するのが難しいリスクであることは既にわかっています。アクセストークンは、このリスクを最小限に抑えるために一時的に有効になる可能性があります。
私はこのアプローチが簡単で、どこかに大きな欠陥があると仮定しています。私を啓発できますか?
oauth2.0 - http://oauth.net/2/について読むことに興味があるかもしれません。認証の現在の傾向です。基本的にクライアントが開くと、サービスプロバイダによって管理されているWebページが開き、ユーザは自分のアカウントにログインし、クライアントはアクセスコードを受信したページにリダイレクトされます(これは短時間で利用可能です)。アクセストークンとリフレッシュトークンのペアに対してコードが交換されます。アクセストークンは、ユーザーのアカウントにアクセスするために使用され、更新トークンはアクセストークンを更新するために使用されます。 – stan0
私はoauthについて読んだことがありますが、それは私たちには適していないと思います。私たちはサードパーティの認証システムによるログインを許可していないので、過剰な使用のようです。ユーザーはユーザー名とパスワードを持っていないので、入力された電話番号にアクセスできることを確認するだけです(検証SMS)。アクセス可能なデータも電話番号に関連付けられています。 – Dennisch
私の主張は、oauth2.0に似た認証システムを記述したことでした。おそらくoauthの長所と短所(アクセストークン、セキュリティなど)があなたのシステムに有効でしょう – stan0