API を設計するための Rest アプローチを実装しようとしています。
以下のワークフローを実行して、私の疑問を解消し、間違いを指摘してください。
クライアント(Web ブラウザ) クライアントからの残りの呼び出し ->/post /login ユーザー名/パスワード
サーバー /login サービスは、ユーザー名とパスワードが正しいかどうかを DB でチェックします OK:200 を返します + データを送り返します-> X
クライアントは、ユーザーが認証されたという確認 + データを受け取ります -> X サーバーへの後続の呼び出しにデータ X を使用して、他のサービス呼び出しを通じてユーザー固有の情報を取得します
/get/FirstName_of_User/X または
/get/LastName_of_User/X
今、私の疑問は次のとおりです(次のことを行うためのベストプラクティスは何ですか)
後続のリクエストでは、誰のデータをリクエストしているかをサービスに伝える必要があるため、X は何を指定する必要がありますか? (作成されたユーザー名または一時的なトークン (Rest はすべてステートレスであるため、意味がありません) またはその他の何か?)
この X が返されたら、後続のすべてのリクエストで訴えられるように、クライアント側のどこに保存する必要がありますか? (Cookie またはその他の方法が存在します) ?
これがその後の呼び出しの方法である場合
/get/FirstName_of_User/X
この呼び出しが他の誰かによっても行われた場合、結果が得られます。ログインしたばかりの人に結果のみを取得してもらいたい..
Reg question 3 - 私はこのリンクをstackoverflowで見つけました - Is session used to REST authentication?
HMACの使用を提案し、このリンクを見つけました-http : //www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/HMACをRestに使用する方法について説明しています(基本的にはクライアントとサーバーの両方に秘密鍵があり、それを使用してリクエストをハッシュします)。
このアプローチに関する私の疑問は、クライアントとサーバーの両方が知っている秘密鍵としてパスワードを使用するとします..その後、クライアント側では、後続の各リクエストをハッシュするためにパスワードをCookieに保存する必要がありますか??
ありがとう 疑問に対する助けをいただければ幸いです
PS: PHP + Mysql を使用してシステムを実装しようとしています。