TL;DR:可以欺骗您的 Facebook 登录名的糟糕 Facebook 管理员可以在 Facebook 上以您的名义发布不良内容,这通常被认为比在 Stack Exchange 上发布问题更糟糕。
我更详细的答案集中在OAuth 2.0上,它是此用例的行业标准,并且是 OP 1中 Google 授权草图的背后。
OAuth 2.0 框架最初不仅仅用于身份验证,而是用于更一般的授权用例:服务 A 想要访问服务 B 上用户拥有的某些资源。
例如,用户在服务 A(照片编辑应用程序)和服务 B(Google Drive)上都有一个帐户。使用 OAuth 2.0,用户授予应用程序访问其在 Goole Drive 上的照片的权限。一些注意点:
- 服务 A 需要是服务 B 上的注册应用程序:在示例中,开发人员必须在Google Developer上注册她的照片编辑应用程序。在启动授权流程时,服务 A 通过客户端 ID 和客户端密码(如果是服务器端流程)或客户端 ID 和主机名(如果是客户端流程)向服务 B 标识自己。
- 服务 A 将用户重定向到服务 B 的授权端点,用户只需在服务 B 上输入其服务 B 的凭据。服务 A 不能欺骗服务 B 的登录,因为它不控制授权端点。服务 B 不能欺骗服务 A 的登录,因为它不是由用户提供的。
- 服务 A 可以用来访问用户在服务 B 上的资源的最终令牌响应带有一个范围。服务 B 将让服务 A 仅访问授权范围内的资源。范围会在用户重定向到的授权窗口中向用户解释。在该示例中,来自 Google Drive 的授权窗口将解释诸如“此照片编辑应用程序可以查看和修改您在 Drive 上的照片”之类的内容。然后,Google 将允许该应用访问照片,但不允许在 Google Plus 上发布任何内容,因为它不在授权范围内。
第三方登录是一种非常常见的特殊情况,用户拥有的资源是他们在服务 B 上的基本帐户信息。开发人员没有要求用户在她的服务上注册,而是选择让谷歌验证用户的身份.
该系统仅在以下情况下工作
- 服务 A 信任服务 B
- 用户信任服务 B
好消息是用户不必信任服务 A。
但是,如果用户比服务 B 更信任服务 A,则他们不应使用第三方登录并在服务 A 上注册(当该选项可用时)。
1 个原始帖子