这是一个与API相关的问题,适用于我正在处理的API,并且想知道执行此操作的标准方法。
说用户1创建了帐户,以便他可以访问它 获取/账户
但是当他访问特定帐户的交易时 GET / accounts / acct1 / transactions
该API如何知道acct1实际上属于该user1,而不是user2访问user1的帐户的情况。
使用Oauth 2.0令牌通过移动应用程序访问此API。因此,虽然访问令牌控制对API端点的访问,但我们如何控制对该端点上的特定用户数据的访问。 (使用范围?)
我一直在关注Spotify的apis,他们似乎是通过v1 / me终点来做这件事..还在阅读......
我是一个菜鸟,它在我看来,这应该在某些RFC中以标准方式记录在某处,但是我找不到它并且会欣赏方向
答案 0 :(得分:0)
您能否提供有关用例的更多详细信息?你为什么使用OAuth?
听起来您需要一个身份验证协议 - 即让您的服务器知道谁正在访问特定API的协议。
OAuth 2.0 is not an authentication protocol
OAuth的主要用例是让一个应用程序代表另一个应用程序的用户执行操作。
例如,如果您的服务器想要代表用户在Facebook上发布消息,您将使用OAuth从Facebook获取令牌,该令牌允许您代表用户发布消息。请注意,在最常见的情况下,您的应用程序不知道哪个用户由令牌表示。实际上,用户甚至可能不是您的应用程序的(注册)用户 - 他们只需要是Facebook的用户。
实际上,您经常可以使用您必须使用的令牌来查询Facebook以获取用户的身份。因此,您的服务器将从请求标头中提取OAuth令牌,并使用它向Facebook的Graph API发出查询以获取用户ID。
请注意,用户是Facebook用户而不是您应用的用户,因此您需要以某种方式将Facebook用户ID映射到您自己的用户和权限系统 - 即检查您的数据库以确保用户具有做他们要做的事。
这种机制通常在使用OAuth时使用,例如身份验证协议(如上所述,它不是)。
我应该补充一点,如果您的应用获取OAuth令牌并将其传递到您的服务器以进行身份验证,那么此流程不是100%安全的,例如here所述,所以请确保您执行此操作对您的案件进行适当的风险分析简而言之,一个坚定的攻击者理论上可以冒充你的应用程序并获得代表其他用户的令牌。