何时使用Oauth和API密钥身份验证类型

时间:2017-06-29 05:07:27

标签: api oauth api-key

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

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

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

1 个答案:

答案 0 :(得分:0)

以下是标准4 Oauth2流程中的2个,可满足您提及的场景。

  • 授权码
  • 客户端凭据。

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

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

将“客户端凭据”流用于“API密钥”方案。这将是您的应用程序需要访问,例如,公共Facebook页面/信息,因此不需要特定用户同意,只能使用其API密钥(客户端ID和客户端密钥)