HTTP POST および GET を介したバックエンド PHP サーバー API とのモバイル アプリ通信というかなり標準的なシナリオがあります。ユーザーは何かを行うためにモバイル アプリにログインする必要があるため、モバイル アプリからサーバーへのすべての要求は、ユーザー資格情報で署名する必要があります。ユーザー ID とパスワードは、ログインに成功するとモバイル アプリの内部設定に保存されるため、ユーザーは再度入力する必要がありません。
以前は、バックエンドの PHP Web サービスは他の人によって開発されていましたが、今では自分で実装する必要があります。以前のプロジェクトを見ると、リクエストごとにユーザー資格情報を渡す必要がありました。以下にいくつかのリクエスト例を掲載しています。すべてのデータ挿入/更新 Web サービスは POST を使用しますが、userid と pwd は他のデータ (Save Car) と共に body 内で渡されます。すべてのデータ選択サービスは、GET パラメータを介してユーザー ID とそのパスワードを渡します。
それは最善で安全な方法ですか?おそらく、sha1(userid+password=salt) を HTTP 承認ヘッダーに入れ、userid を body のままにしておく必要があります (サーバーのデータベースからユーザー パスを選択する必要があるため)。または、モバイル アプリで OAuth 2 を使用して HTTP リクエストに署名し (userid+pass+... を認証ヘッダーに生成)、バックエンドで OAuth 2 を使用して同じハッシュを生成し、それが同じかどうかを確認できますか? リクエストに署名するためだけにOAuth 2 for PHPを使用する簡単な方法を見つけることができなかったので、助けていただければ幸いです:)また、iOS/Android開発に使用するライブラリに関する関連情報もいただければ幸いです。
ログインする
HTTP method: POST
URL: http://mybackend.com/login
BODY:
{ "uid" : 123,
"pwd" : "3CB3E2E6AECA48C41000119767B561F5E9E66229" // contains sha1(pass+salt)
}
車のリストを取得
HTTP method: GET
URL: http://mybackend.com/getCars?uid=123&pwd=3CB3E2E6AECA48C41000119767B561F5E9E66229
車を保存
HTTP method: POST
URL: http://mybackend.com/saveCar
BODY:
{ "uid" : 123,
"pwd" : "3CB3E2E6AECA48C41000119767B561F5E9E66229",
"car" :
{ "id" : 111,
"name": "My car"
}
}