使用HTTP摘要式身份验证保护REST端点

时间:2013-04-04 15:42:14

标签: python security rest authentication flask

  • 我正在Python使用Flask开发一个项目,其端点为
@app.route(/transaction)
def get(request):
  ...

@app.route(/transaction)
def post(request):
  ...
  • 另外,我希望REST端点在方法执行之前进行身份验证
  • 我搜索了很多关于这一点,发现Digest Authentication是我可能需要的(我现在还不确定)

问题

  • 如何使用python和flask实现这样的安全模式?我可以看到并从中学到的任何可用示例吗?
  • 我不想以明文传递密码,使用令牌是一个更好的主意,因此考虑HTTP摘要身份验证是一个正确的选择吗?
  • 您可能想要推荐的其他任何内容?

我希望我的服务器无状态,而不是在服务器端存储任何会话

1 个答案:

答案 0 :(得分:0)

请看https://flask-restless.readthedocs.org/en/latest/

对于安全性存在扩展程序:http://pythonhosted.org/Flask-Login/http://pythonhosted.org/Flask-Principal/

无状态服务不存储会话数据,这意味着您必须为每个请求发送凭据。

  1. 您只需使用普通的登录名和密码,或使用哈希函数。
  2. 您可以在用户端存储密钥,并生成/加密您的普通数据作为登录,密码和其他请求数据。这可以保护您免受其他请求的影响,但不能保护某些请求,但您也可以添加类似时间戳的内容并拒绝任何旧请求或添加唯一请求ID并拒绝某些请求。
  3. 您可以使用更有效的内容,例如https。
  4. 有状态服务还可以获得用于身份验证的普通登录名和密码,并生成用于授权的令牌,该令牌随每个请求一起发送。