寻找建议来保护用python-flask编写的私有REST API

a.b*_*b.d 15 python rest oauth-provider

我目前正在使用微框架Flask在python中编写一个rest API.它是一个私有API,它处理用户数据.我计划使用此API来构建网络和Android应用.

现在我使用摘要身份验证来保护私人用户数据.例如,如果您想使用用户bob在我的服务上发布数据,您可以在myapi/story/create上发布请求,并使用摘要模式提供bob的凭据.

我知道这不是一个好的解决方案,因为:
-Digest auth不安全
- 客户端未经过身份验证(如何保护与当前用户无关的请求,例如创建新用户?)

我阅读了很多关于oAuth的内容,但是三脚认证似乎有点过分,因为我不打算向第三方开放我的API.
2脚oAuth不适合,因为它只为客户提供身份验证,而不是为用户提供身份验证.
oAuth的另一个问题是我没有找到在Python中实现它的综合指南.我找到了python-oauth2库,但我不了解服务器示例,我找不到其他文档.此外,似乎oAuth的许多方面都未包含在此示例中.

所以我的问题是:

  1. 是否有替代方案(不是oAuth)用于以合理的安全级别对客户端和用户进行身份验证?
  2. 如果oAuth是最好的解决方案:
    • 如何跳过授权过程(因为用户不必授权第三方客户端)?
    • 是否有python-oauth2或任何其他Python库的详细文档?

任何帮助或建议将不胜感激.

eas*_*sel 8

简单的答案是仅通过HTTPS公开您的API,然后使用HTTP基本身份验证.我认为没有理由去理解Digest.基本身份验证是不安全的,但随每个请求一起提交,因此您永远不必担心您的身份验证过时或者其他问题.通过HTTPS隧道传输,您可以获得安全连接.

如果要对客户端进行身份验证,可以使用SSL客户端证书.也就是说,一般来说真的很难将客户端锁定在恶意用户身上,所以我会考虑让注册功能公开访问,并通过带外帐户验证保护自己免受DOS等攻击.