OAuth服务和官方客户支持

时间:2013-04-29 07:13:22

标签: python api authentication oauth

我正在试图理解OAuth,我很难搞清楚这个基本的东西......

我开发了一项服务(使用Python和Flask),它通过专用的登录和支持来支持经典的身份验证。密码组合,以及webapp形式的“官方”客户端。我希望我的服务支持OAuth并查看flask-oauthprovider,这似乎非常适合这项任务,但我似乎无法理解一切应该如何表达。

我的问题是:

  1. 今天,我的所有API入口点都要求用户登录:一旦我的服务支持OAuth,每个入口点是否应该变成“oauth_required”而不是“login_required”?
  2. 支持我的“官方”webapp前端的正确方法是什么?我宁愿不通过常规的OAuth流程(使用额外的重定向来登录服务)。是应该通过OAuth自动授予访问权限,还是应该绕过OAuth并直接使用“资源所有者”登录&密码?

1 个答案:

答案 0 :(得分:0)

我认为oauthlib背后的概念存在的一个问题是,它很难成为一切,结果是一个难以推理的抽象集(这与python-oauth2方法非常相似) 。特别是OAuth提供程序是棘手的,因为你隐含地需要保留像令牌这样的东西,更不用说某种预先存在的用户管理的假设了。作为这样一个好的"从框架到框架,或者惯用的实施往往更加自以为是。在我看来,这是为什么我们没有看到单个Python OAuth提供程序实现作为抽象的一部分:没有很好的解决方案,但有很多混乱的解决方案。看看flask-oauthprovider,我们看到了这些问题的一些直接例子。我坚持使用flask-login有类似的问题。无论如何,在上个周末,我写了一篇非常粗略的第一遍OAuth provider in Flask,#34;正常工作&#34 ;;您可以随意查看并根据您的需求进行调整。它假定像MongoDB这样的东西,但只需要很少的工作,我认为可以使用任何数据存储。

1)保护您希望通过第三方访问的终端,例如:你的公共API。

2)我会避免使用自动访问令牌,这会使每个用户的谈判授权失败,除非你有一个不同的方案,例如一组预定义的客户端。我相信你所说的第二个选项是xauth,在这种情况下,为什么不使用OAuth 2.0和grant_type = password?承载令牌在概念上类似,但只要您可以提供HTTPS,就可以更容易实现。

相关问题