2

Backbone.js フロント エンドを使用して、モノリシック Rails アプリを純粋な JSON API にリファクタリングしています。近い将来、他のスマートフォン アプリのフロントエンドがこれに続く予定であり、API を一般に公開する可能性が社内で議論されています。

そのため、最初のラウンドで適切に作業を行い、REST API を OAuth 2.0 で保護して、社内で構築したものを含め、その上に構築されたすべてのアプリが「単なる別の OAuth クライアント」になるようにしようと考えました。これにより、レート制限、キーの取り消し、無料で操作できるリソースの制限など、通常の機能も提供されます。

これまでのところ、Doorkeeper gem に関するRailscasts のエピソード(警告、これはプロのエピソードです) に従って、独自の API を保護し、ユーザー向けの Web アプリをクライアントとして登録しました。

ここで興味深いのは、元のアプリでは、ユーザーが Omniauth gem を介して Facebook、Google、Twitter などからサインインできることです。私が理解しているように、OAuth はユーザー認証ではなく、クライアントの承認に関係しているため、既にある OmniAuth フローが引き続き必要になります。

しかし:

  • 「Omniauthing」コントローラーは、API または Web クライアントのどこに配置する必要がありますか?
  • ユーザーを認証するための「Omniauthビット」は、「OAuthビット」にどのように接続する必要がありますか?

更新: クライアントは、単なるバックボーン アプリの場合もあれば、独自の DB を持たないが、ActiveResource を使用してバックボーン アプリと API の間を仲介する「薄い Rails Web サイト ラッパー」とツイン化されたバックボーン アプリの場合もあります。「秘密を守れるクライアント」に対応できるメリットがあります。このシナリオでは、"Omniauthing" コントローラーは、必要に応じて Rails クライアント アプリに配置できます。

同様のSO の質問では、Facebook のみでのログインについて議論されましたが、認証サーバーは 1 つ (Facebook) のみであるべきであるという答えは明らかでしたが、ユーザー認証の結果をリソース サーバーに供給することについては何も述べていませんでした。

4

0 に答える 0