我了解OAuth 不是身份验证协议,而是授权协议(即使Google 的 OAuth 2.0 页面上的第一段不同意),以及:
[...] 授权可以被滥用成一些伪身份验证,基于如果实体 A 通过 OAuth 从 B 获得访问密钥,并将其显示给服务器 S,那么服务器 S 可能会在授予 B 之前推断出B 验证了 A访问密钥。
并且当我需要对用户进行身份验证时应该使用 OpenID。
但是,这是否意味着如果我在 Google 上实际使用 OAuth(不是OpenID Connect,而是 OAuth 2.0),是否意味着我的 Web 应用程序不安全?是否会受到损害以访问帐户或做错事?用户可以伪造一些东西来传递给另一个用户吗?
为了使这个问题不那么抽象,让我们假设:
我使用的库(例如
Flask-OAuth
Python 和其他语言的类似库)是安全的。我相信谷歌,
用户的谷歌账户没有被泄露(如果用户的谷歌账户被泄露,攻击者确实可以访问我的网络应用程序上的用户账户),
FAI/托管服务/中间的其他人不应该被信任,
任何拥有谷歌帐户的人都可以登录/注册/无论如何,
我不需要用户的电子邮件地址、名字/姓氏或其他个人信息是真实的;我所需要的只是保护一个用户的数据不受其他用户的影响。