Django / tastypie实现中的OAuth 2.0客户端ID

时间:2013-12-12 19:55:03

标签: django oauth oauth-2.0 tastypie

我正在尝试为我的API实施OAuth 2.0。我正在使用第三方库作为基本的OAuth提供商,django-oauth2-provider, 和Tastypie作为框架。这些细节不应该太重要。 OAuth 2.0可以在创建用户时使用OAuth 2客户端 管理用户的secret_key并创建其id。然后,客户可以提供他们从用户创建中获得的用户ID 端点及其用户名和密码,以获取允许他们使用API​​端点的访问令牌。

我遇到的问题是检索客户端ID(必须将其传递给访问令牌的请求)。显然,当用户首次创建时 我可以使用HTTP响应返回client_id。然而,在那之后,显然会出现用户没有客户端ID的情况。 本地存储(这是传统的用户/应用设置,而不是像您自己的客户端ID始终可见的Google API)。我想要保护 使用OAuth GET请求客户资源,但这意味着我无法查询API以获取给定用户的客户端ID。这似乎是重点 如果我总是可以通过用户名和密码从某个oauth端点检索我的客户端ID,那么OAuth就会失败。我在考虑这个错误吗?

此外,通过阅读OAuth规范,我认为应该提供客户端ID和客户端密码才能获得访问令牌。然而,我使用的实现默认强制用户提供客户端ID,客户端密码,用户名和密码。我已经覆盖了实现只需要客户端ID和秘密,但我想确保这是正确的调用,我不会错过任何东西。

编辑flup的回复:

我正在处理Django API作为资源服务器,以及作为资源所有者的iPhone应用程序的用户。 iPhone应用程序直接与服务器相关联 - 换句话说,这里没有涉及第三方,也没有计划在未来涉及它们;所有软件都是我们的。我认为密码流将是我在这种情况下需要的。实际上,这似乎是django-oauth2-provider默认提供的内容。我想保持与他们正在做的事情一致,不必完全重新发明轮子。

1 个答案:

答案 0 :(得分:0)

oauth2的目标是让资源所有者向客户端提供一个代客密钥,授权代表他访问您服务器上的某些资源。

如果没有涉及第三方,则没有客户授权,也不需要使用oauth2。

相反,您可以使用standard authentication mechanisms present in tastypie