为什么后端需要第三方认证?

Why would a backend need third-party authentication?

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

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

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

环回所做的是,它创建一个 UserIdendity 模型并将其连接到一个 UserModel,从而在 he/she 不存在的情况下创建一个 User

我认为服务器端身份验证比客户端更可靠。大多数社交网络推荐服务器端身份验证

我已经成功地使用 passport 在我的应用程序中实现了 fb 身份验证,并且比几天前有了更好的理解。

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

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

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

Passport 使上述过程易于实施。

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