4

Sinatra を使用して RESTful JSON データ API を開発することに興味があり、HTML5/JS アプリでそのデータ API を使用します。明らかに、データ API にはなんらかの形式の認証が必要であるため、ユーザー Joe は API を介して自分のものだけにアクセスできます。独自の認証を行うことができず、代わりに Google/Facebook/Twitter を ID プロバイダーとして利用できればよいのですが。

私は Omniauth を使用して OAuth2 を調べましたが、従来の Web アプリに十分に簡単に関連付けることができますが、FB/Twitter/Google を使用して JSON API を保護することについて話すとき、私の理解は次の理由で崩壊します:

  • API は、OAuth2 フローのリダイレクトを行うものであってはなりません。
  • ID プロバイダーからのコールバック データが届くと、おそらく HTML/JS アプリにヒットしますよね?

Web 以外のメカニズムを介してサードパーティの開発者に API アクセスを提供したい場合は、さらに問題があります。ここでは、OAuth2 リダイレクト フロー ビジネスは確実に機能しません。

つまり、次のようなアーキテクチャが必要です。

[ HTML/JS client ] --- [ JSON API  ]       [ FB/Twitter/Google ]
                            |
                            |
                       [ Developer ]

事実上、私が求めているのはここにあるものですが、これは Rails 専用です:

シナトラでこれを行うための指針はありますか? いくつかの具体例を使用してください。

4

1 に答える 1

0

まあ、あなたは自分自身を隅に追いやったようなものです。OAuth 認証の前提の 1 つは、HTTP クライアント (Web ブラウザーなど) でアクションを実行して、OAuth プロバイダーに対して自分自身を認証するユーザーがいることです。Web 以外のメカニズムを介してサードパーティの開発者に API アクセスを提供する場合、そのような認証フローは使用できません。

インタラクティブな Web ベースの認証パターンに対応していない API クライアントを認証する場合は、API キー パターンに従う必要があります。何らかの方法で API キーを生成し、承認されたサード パーティの開発者に渡す必要があります。Twitter、Facebook、Google がどのようにそれを行っているかを見てください。

于 2013-06-16T02:54:06.160 に答える