2

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"
    }
 }
4

1 に答える 1

0

ユーザーがアプリでパスワードを変更できるかどうかを尋ねる場合があります。そのパスワードは、アプリ コードに保存されているパスワードで更新されますか?

access_token のディレクトリを作成し、その中でユーザー ID とパスワードを使用して、データを投稿するより良い方法。例: { "access_token":{ "uid" : 123, "pwd" : "3CB3E2E6AECA48C41000119767B561F5E9E66229" } , "saveCar" : { "id" : 111, "name": "私の車" } }

サーバー側のphpコードでは、データベースをチェックし、データベースでsaveCarを実行するためにアクセスできるようにすることで、このアクセストークンを使用してすべてのURLに簡単にアクセスできます。そうしないと、サーバー側からアクセスがログインに失敗したため、エラーメッセージが表示され、ログインで再試行してください。すべてのリクエストで post メソッドで使用します。セキュリティタイプに適しています。POST メソッドは、PHP データ セキュリティ用のメソッドです。これには他に必要なものはありません。

車のリストに GET HTTP リクエストを使用する代わりに、次のようにアクセス トークンを URL に POST することができます。

{ "access_token":{ "uid" : 123, "pwd" : "3CB3E2E6AECA48C41000119767B561F5E9E66229", } } を Carlist の URL に追加します。 http://mybackend.com/getCars ? その post メソッドから、この post メソッドの結果としてのコードを実行すると、車のリストが返されます。

ありがとう、この説明がお役に立てば幸いです。

于 2013-04-25T11:52:10.613 に答える