【问题标题】:Why would a backend need third-party authentication?为什么后端需要第三方身份验证?
【发布时间】:2017-09-10 16:03:19
【问题描述】:

我正在尝试在我的应用上实施 Facebook 身份验证。我注意到我的 API 后端 - Loopback 具有 passport 集成。我不明白这样做的目的是什么?

据我了解,身份验证发生在客户端。并且 FB 发出的令牌应该被传递到后端以生成会话 cookie/令牌以与我的应用程序的 API 对话。所以后端应该只验证 FB 用户令牌,而不是真正验证用户。

【问题讨论】:

    标签: facebook-graph-api passport.js loopback


    【解决方案1】:

    Passport 提供了一套全面的策略,支持使用用户名和密码进行身份验证。当您管理多个社交网络登录时,这肯定会派上用场。

    loopback 的作用是创建一个UserIdendity 模型并将其连接到UserModel,从而在他/她不存在时创建一个User

    我的观点是服务器端身份验证比客户端更可靠。大多数社交网络都推荐服务器端身份验证

    【讨论】:

    • 我了解 Passport 可以轻松集成多个社交登录,但我不明白它在后端做了什么。由于用户直接在 fb(例如)域上输入其用户密码,因此身份验证必须在客户端进行。我不明白后端的第 3 方身份验证。
    【解决方案2】:

    我已经设法使用护照在我的应用中实现了 fb 身份验证,并且比几天前有了更好的理解。

    我的假设是,由于用户必须在某些时候输入用户名和密码,因此必须在客户端进行身份验证。

    但是,服务器仍然可以处理该进程。服务器可以代表他们执行此操作,而不是客户端与 FB 或其他提供商通信应用程序 ID 和访问令牌。

    服务器不会在客户端身份验证期间看到弹出窗口,而是将用户重定向到 facebook(或其他提供商)并传达应用程序 ID 和密码。成功登录后,facebook 会向应用服务器发送一个可交换 access_token 的授权代码,并将用户重定向回另一个 URL。

    Passport 使上述过程易于实现。

    对我来说,这种方法似乎更安全,因为用户永远不会看到您的应用 ID 或他们自己的 fb access_token。此外,当通过服务器方法而不是在客户端(60 天对几个小时)发出时,令牌的有效期要长得多。

    【讨论】:

      猜你喜欢
      • 2015-10-22
      • 2016-09-02
      • 2013-12-24
      • 1970-01-01
      • 2018-06-20
      • 1970-01-01
      • 2011-09-29
      • 1970-01-01
      • 2018-03-05
      相关资源
      最近更新 更多