0

API を設計するための Rest アプローチを実装しようとしています。

以下のワークフローを実行して、私の疑問を解消し、間違いを指摘してください。

  1. クライアント(Web ブラウザ) クライアントからの残りの呼び出し ->/post /login ユーザー名/パスワード

  2. サーバー /login サービスは、ユーザー名とパスワードが正しいかどうかを DB でチェックします OK:200 を返します + データを送り返します-> X

  3. クライアントは、ユーザーが認証されたという確認 + データを受け取ります -> X サーバーへの後続の呼び出しにデータ X を使用して、他のサービス呼び出しを通じてユーザー固有の情報を取得します

/get/FirstName_of_User/X または

/get/LastName_of_User/X

今、私の疑問は次のとおりです(次のことを行うためのベストプラクティスは何ですか)

  1. 後続のリクエストでは、誰のデータをリクエストしているかをサービスに伝える必要があるため、X は何を指定する必要がありますか? (作成されたユーザー名または一時的なトークン (Rest はすべてステートレスであるため、意味がありません) またはその他の何か?)

  2. この X が返されたら、後続のすべてのリクエストで訴えられるように、クライアント側のどこに保存する必要がありますか? (Cookie またはその他の方法が存在します) ?

  3. これがその後の呼び出しの方法である場合
    /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 を使用してシステムを実装しようとしています。

4

2 に答える 2

0
/user/id?access_token=42342342342423

残りのAPIはSEOを必要としないので、firstname_of_userを削除し、idを使用するだけで、よりシンプルでクリーンになり、保守が少なくなります。

于 2012-04-30T10:50:20.930 に答える
0

どういうわけか、あなたの要件と私たちのプロジェクトで実装しているものは、異なるプラットフォームを除いて同じように見えます。私たちの要件は.netです。

ユーザー名とパスワードを使用して、ログインリソースについて同じプロセスに従います。このトークンに署名するメカニズムを決定したら、それが常にURLに追加されることは必須ではありません。

  1. URLでトークンを送信する代わりに、httpプロトコルの認証ヘッダーでトークンを試してください。参照を使用Authorization = "Authorization" ":" credentials

このようにして、URLを同じに保つことができますが、認証に基づいてリソースを提供できます。

  1. このトークンは、後続のリクエストのためにCookieに保存できます。

  2. URLからトークンを削除すると、3番目の疑問が解決します。

これがある程度お役に立てば幸いです。

于 2012-05-01T17:25:03.320 に答える