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 専用です:
シナトラでこれを行うための指針はありますか? いくつかの具体例を使用してください。