【问题标题】:When to use Oauth and API key authentication types何时使用 Oauth 和 API 密钥身份验证类型
【发布时间】:2017-06-29 05:07:27
【问题描述】:

我知道 Oauth 用于授予第三方应用程序访问用户数据(例如他的 Facebook 帐户上的照片)的权限,而无需将他的 Facebook 凭据透露给第三方应用程序。例如,当您尝试使用在线照片编辑工具并想从 facebook 加载照片时,facebook 会弹出一条消息,询问您是否真的要允许该应用程序访问您的数据。因此,此时 facebook 只返回一个临时访问令牌,应用程序可以使用它来访问您的 facebook 照片。 (据我了解,此访问令牌的范围是它仅有权访问特定用户的照片)是的,这种设置是必需的,因为您不能信任第三方应用程序以至于放弃您的凭据。

假设 facebook 以某种方式而不是 oauth 使用 api 密钥身份验证。这意味着所有订阅了 facebook API 的第三方应用程序都已经拥有一个可以用来访问 facebook 数据源的密钥。这样应用程序就可以直接将您带到您的 facebook 照片,并且 facebook 不会通知您外人是试图访问您的私人数据。这种方法不适合暴露用户敏感数据的 api,但对于暴露不那么特定于用户(如谷歌地图)数据的 api,api 密钥方法应该足够了,对吧?

所以我的问题是,决定应该使用哪种身份验证类型的标准是什么?如果我的理解有误,感谢反馈。

【问题讨论】:

    标签: api oauth api-key


    【解决方案1】:

    这里有 2 个标准的 4 个 Oauth2 流程,可满足您提到的场景。

    • 授权码
    • 客户端凭据。

    使用上面的 Facebook 示例,您可以这样想:

    在您的“Oauth”场景中使用授权代码流,您的应用需要委托授权才能访问用户的 Facebook 照片。这意味着用户必须登录并授予对您应用的访问权限并且您的应用必须具有 Facebook 颁发的 API 密钥(客户端 ID)。

    为您的“API 密钥”场景使用客户端凭据流。这将是当您的应用程序需要访问例如公共 Facebook 页面/信息,因此不需要特定用户同意并且可以使用其 API 密钥(客户端 ID 和客户端密钥)

    【讨论】:

      猜你喜欢
      • 2021-01-22
      • 2011-10-09
      • 2019-09-04
      • 2020-09-20
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多