哪个认证流程

The*_*aan 5 authentication facebook openid-connect oauth2

在尝试查找身份验证系统以向Web服务添加社交登录时,我有一些关于我应该使用的问题.我的要求是:

  1. 显然是安全的.
  2. 允许用户至少使用Google和Facebook登录,最好是与Twitter和LinkedIn等其他用户一起登录
  3. 能够对后端服务的用户进行身份验证.
  4. 用户将从移动应用程序或基于Web的应用程序访问后端服务.

OpenID Connect听起来很合适,但我的理解是Facebook不支持它.

OAuth2通过有时称为反向流的方式提供解决方案.对于Web应用程序来说这似乎很好,但我不认为恶意用户可能会从其他应用程序中获取令牌并使用它们来冒充用户.我的理解是,这尤其是Client/Implicit Flow的一个问题.

有没有办法在移动应用程序中保护客户端的秘密?更具体地说,我可以在移动应用程序上实现一些东西,允许我在接受之前检查我的服务实际上是任何令牌的目标受众吗?

还有关于客户端ID /客户端密钥的第二个问题:

客户端将从授权服务器获取用户ID或电子邮件,并将其作为标识手段发送到后端,但后端需要验证这一点.为此,我想知道我还必须向后端发送什么?访问令牌?我是否在客户端和后端的授权服务器上使用相同的客户端ID和客户端密钥,以允许后端验证访问令牌?

  1. 还有另外一种方法吗?
  2. 我应该只实施Openid Connect和Facebook Connect并为每个用户调用正确的一个吗?
  3. 这有助于克服这些问题吗?