3

我正在创建一个应用程序,该应用程序将使用 OAuth2 协议提供身份验证,以使用应用程序的策略为已知客户端提供服务。

我已经尝试使用oauth2orize, 和node-oauth2-provider模块,并且我一直在同一点:

  1. 用户通过客户端登录,api keyapi secret验证通过,用户可以通过我的provider app 成功登录。
  2. 在客户端应用程序和用户成功通过身份验证后,将向客户端应用程序发送回一个令牌(用户已登录客户端 - 耶!),但用户立即在应用程序上注销Provider。我不知道发生在哪里以及为什么会发生这种情况 - 这是 OAuth2 协议的一个功能吗?

这是正常的吗?如果我使用 Facebook 作为一种策略(想想passport-facebook),那么如果我使用 Facebook 登录任何应用程序,当我被重定向回该应用程序时,我仍然会登录到 Facebook -是我希望为客户提供访问我的应用程序的行为.

这两个 Provider 模块都非常擅长完成我正在寻找的 90% 的工作,但在他们的示例oauth2orizenode-oauth2-provider中都没有提供“持久”登录。我错过了什么吗?

4

1 回答 1

6

嗯,我想我明白了。

我在 上运行客户端和服务器localhost,使用不同的端口 - 并且 cookie/会话相互覆盖。

因此,如果客户端 express 应用程序正在运行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 回答