2

SaaSアプリを構築しています。これをhttp://mysaasapp.comと呼びましょう。ユーザーがサインアップすると、サブドメイン名http://myinstance.mysaasapp.comまたはカスタムドメイン名http://instance.mycompany.comなどを使用してインスタンスにアクセスします。

ユーザーがインスタンス内でそれらのサービスのアカウントにリンクできるように、他のサービス(Facebook、Twitterなど)との統合を検討しています。Twitterは、OAuthリダイレクトコールバックに関しては非常に寛大です(コールバック/リダイレクトURLは、OAuthリクエストを行うときに設定できます)。ただし、Facebookはそれほど寛大ではなく、コールバック/リダイレクトドメインはfacebook.comのアプリの構成内で設定されます

ユーザーがインスタンスでカスタムドメイン名を使用する場合、サイトのサブドメイン(http://myinstance.mysaasapp.com)を非アクティブにすることを選択できます。これは、OAuthのコールバックドメインをmysaasapp.comに設定して、それが機能することを期待できないことを意味します。

解決策は、OAuthプロキシ(http://proxy.mysaasapp.com)を使用することです。以前にHybridAuthを使用しましたが、これをOAuthプロキシに簡単に変換できるはずです。

そうは言っても:

  • AuthリクエストのみをプロキシするためにOAuthプロキシを使用する必要がありますか?アクセストークンを取得したら、プロキシを介してリクエストのプロキシを続行する必要がありますか、それともインスタンスから直接プロバイダーに接続する必要がありますか?つまり、(認証後の)API呼び出しを特定の定義済みドメインに制限するOAuthで保護されたAPIはありますか?

  • リクエストがアプリのインスタンスからのみ発信され、レスポンスがアプリのインスタンスにのみ送信されるように、OAuthプロキシをどのように保護する必要がありますか?

4

1 に答える 1

2

これが私がやったことです。

HybridAuthを中心に構築された非常にシンプルなWebアプリを作成しました。このWebアプリはoauth.mydomain.comでホストされます。

何が起こるかというと、自分のインスタンスのユーザーがFacebookなどのプロバイダーに接続したい場合、アプリインスタンスはプロバイダータイプとその他のいくつかの情報を投稿することにより、oauth.mydomain.comへのサーバー間接続を行います。プロキシはトークンを返します。

次に、トークンをgetパラメーターとして渡しながら、ユーザーをoauth.mydomain.comにリダイレクトします。oauth.mydomain.comはトークンを無効にし、ユーザーのセッションに情報を保存します。

次に、ユーザーはプロバイダーによる認証に進みます。これが成功すると、oauth.mydomain.comはコンシューマートークンとキーを特別なエンドポイントのインスタンスにPOSTします。

投稿が完了すると、theirdomain.comのページにリダイレクトされます。

これは単純な方法であり、プロバイダー(少なくとも私が調べたもの)は認証プロセス中にドメイン制限のみを実装したため、すべての要求をプロキシしないことにしました(認証要求のみがプロキシされます)。

于 2012-09-07T06:41:02.200 に答える