12

RESTful API を使用して、サーバー側の Web アプリを単一ページの JavaScript アプリに移行しています。現在。ユーザーは、Facebook、Twitter、Google などを使用して、または電子メールとパスワードを使用して認証できます。RESTful API で実行される同じ形式の認証を許可するにはどうすればよいですか? 私はそれが次のように見えると推測しています:

  1. クライアント側のプロバイダーで認証します。
  2. Oauth 応答から何かを取得し、アクセス トークンと引き換えにサーバー上の API に渡します。
  3. 以降の API 呼び出しにはトークンベースの認証を使用します。

私は正しい軌道に乗っていますか?もしそうなら:

  1. 複数のプロバイダーを処理する JS ライブラリはありますか、それともそれぞれに Facebook の JS SDK のようなものを含める必要がありますか?
  2. トークンを生成する API はどのように見えるべきですか? 特に、Oauth プロバイダーから何が必要で、それをサーバー上でどのように検証すればよいですか?
4

2 に答える 2

5

クライアント側ではなく、サーバー側で ID プロバイダーに対する認証プロセスを処理する方が簡単です。したがって、REST サーバーは独自の認証方法 (OAuth ベースの場合もあります) をサポートし、これをサードパーティ プロバイダーに転送する必要があります。したがって、フローは次のようになります。

  1. クライアント (JS) からログイン プロセスを開始します。ログイン先のネットワークを指定して、REST 認証エンドポイントを呼び出します (例: myserver.com/login?provider=facebook)。

  2. サーバー側でログイン プロセスを処理する - プロバイダーのログイン エンドポイントにリダイレクトし、ログイン コールバックを受信し、応答を処理します (Facebook セッション トークンを取得するなど)。

  3. 独自のユーザー セッション (または OAuth を実行している場合はトークン) を発行し、JS クライアントに応答します。

役立つソーシャル ログイン ライブラリがいくつかあります。PHP の場合はhttp://hybridauth.sourceforge.net/、Javaの場合はhttp://code.google.com/p/socialauth/を確認してください。

あなたの人生をもっと楽にする商用ソリューションもいくつかあります (私はGigyaで働いているので偏見があります) が、それは予算がある場合に限られます。

于 2013-08-06T18:10:27.643 に答える