2017-12-02 3 views
0

私はあなたがサインイン/ログインしてそれを使用する予定のアプリを作成しています。今私はそれのための安らかなWebサービスを実装していると私は正しい方法を行くかどうかはわかりません。私のワークフローは:アプリの独自のサインアップとログインシステムの実装

サインアップするには、ユーザーはユーザー名、電子メール、パスワードなどの認証情報を入力します。アプリケーションはパスワードをハッシュし、jsonという資格情報を含む投稿リクエストをWebサービスに送信し、webserviceは新しいユーザーをデータベースに保存します。

システムにログインするには、アプリはパスワードのユーザ名とハッシュを含むgetリクエストをWebサービスに送信し、ハッシュ値を比較し、失敗した場合に適切なレスポンスコードを返します。

appとwebservice間の通信はsslによって保護されています。

これはサインアップ/ログインシステムの正しい安全なワークフローですか?そうでない場合、なぜ安全ではないのですか?また、別のワークフローを推奨できますか?乾杯。

答えて

0

最も重要な点は、Webサービスがhttps経由でしか到達できないことです。 私はあなたがモバイルアプリについて話していると思います。 アプリはパスワードをハッシュしないでください。ウェブサービスはパスワードをハッシュしてからユーザーを保存します。 モバイルアプリをリバースエンジニアリングして、パスワードをハッシュする方法を知ることができます。 したがって、安らかな方法でユーザーを作成するには、ユーザー名、電子メール、およびパスワードを含むPOST要求を本文に送信することです。認証/認可のために

例えばPOST /ユーザー

{ 
     "username": "john-doe", 
     "email": "[email protected]", 
     "password": "some password" 
    } 

あなたはOAuthの2を検討するかもしれないが、それは実装するために膨大な時間を要します。 もう1つのオプションは、access-tokensという別のRESTリソースを持つことです。 認証が必要なときはいつでも、アクセストークンを作成するPOST /アクセストークン要求を行います。

POST /アクセス・トークン

{ 
     "username": "john-doe", 
     "password": "some password" 
    } 

応答

{ 
     "access_token": "9d91c97fc0f98a6311f101246e252ab3230c261c2af", 
     "expries_in": 3600 
    } 

その後のモバイルアプリは、それが期限切れになる前に、それは常にすぐにトークン新しいアクセス権を作成することの世話をする必要があります。 OAuth 2には、アクセストークンとともに配信されるこの目的のためのリフレッシュトークンもあります。その後、リフレッシュトークンをWebサービスに送信するだけで、新しいアクセストークンを取得できます。 認証が必要なWebサービスへのすべての要求で、認証ヘッダーにアクセストークンを含める必要があります。

関連する問題