3

アプリの戦略を使用して既知のクライアントにサービスを提供するために、OAuth2 プロトコルを使用して認証を提供するアプリの作成に取り組んでいます。

oauth2orizenode-oauth2-providerモジュールの両方を使用してみましたが、同じポイントに到達し続けています。

  1. ユーザーはクライアントを介してログインし、API キーAPI シークレットが検証され、ユーザーはプロバイダー アプリを介して正常にログインできます。
  2. クライアント アプリとユーザーが正常に認証された後、トークンがクライアント アプリに送り返されます (ユーザーはクライアントにログインしています - イェイ!) が、ユーザーはすぐにProviderアプリからログアウトされます。どこで、なぜこれが起こるのかわかりません - これは OAuth2 プロトコルの機能ですか?

これは正常ですか?戦略として Facebook を使用する場合 (考えてみてくださいpassport-facebook)、Facebook を使用して任意のアプリにログインすると、アプリにリダイレクトされても Facebook にログインしたままになります。これは、アプリにアクセスするクライアントに提供したい動作です。 .

両方の Provider モジュールは、私が探しているものの 90% を実行するのに優れていますが、例のoauth2orizenode-oauth2-providerで「永続的な」ログインを提供していません。何か不足していますか?

4

1 に答える 1

6

ええと、私はそれを得たと思います。

異なるポートを使用してクライアントとサーバーの両方を実行していましたlocalhostが、Cookie/セッションが互いに上書きしていました。

そのため、クライアント エクスプレス アプリが で実行されていてhttp://localhost:3000、oauth プロバイダーが で実行されているhttp://localhost:3001場合、oauth プロバイダーにログインしてクライアントでセッションを作成すると、プロバイダーのセッションが上書きされていました。

解決策(今のところ):

# /etc/hosts
127.0.0.1 dev.client.com
127.0.0.1 dev.oauth-provider.com

http://dev.client.com:3000にログインするとhttp://dev.oauth-provider.com:3001に移動し、ユーザーが正常にログインしてクライアントでセッションが作成されると、プロバイダーは引き続きログインします.

于 2012-12-03T20:13:43.527 に答える