在烧瓶中保护 REST api

Posted

技术标签:

【中文标题】在烧瓶中保护 REST api【英文标题】:Securing RESTapi in flask 【发布时间】:2011-10-22 18:29:51 【问题描述】:

我正在开发的应用程序使用了很多 ajax 调用。不幸的是,我在研究如何限制对 api 的访问时遇到了障碍。例如:

我有一个对http://site/api/tasks/bob进行ajax调用的表 我需要确保只有登录的鲍勃才能读取该表 (否则知道该模式的人可能会要求查看鲍勃的 只需在浏览器中输入 url 即可完成任务)。 在不同的页面上,同一张表需要能够调用http://site/api/tasks/all并显示所有用户的任务(只有管理员才能做到)

感谢您抽出宝贵时间阅读并回答。

【问题讨论】:

【参考方案1】:

千英尺视图是您需要通过以下方式对用户进行身份验证:

A) 针对每个请求的 HTTP-Auth(basic 或 digest)。

B) 服务器端会话。 (用户进行身份验证并接收会话密钥 - 他们的用户信息存储在服务器上的会话后端,附加到该密钥一旦他们有一个会话,他们可以发出请求将他们的会话密钥传回给您(在 URL 中或在cookie),并且他们有权访问的信息会返回给他们。)

Flask 有一对有用的 extensions 可以处理大部分此类事情 - 查看 Flask-Login 和 Flask-Principal 以查看如何将授权添加到 Flask 应用程序的示例。

【讨论】:

我很想找到更多关于如何实施第二个的信息。 @InnocentPixel -- Flask 已经内置了一个完整记录的会话 api。见:flask.pocoo.org/docs/api/#sessions

以上是关于在烧瓶中保护 REST api的主要内容,如果未能解决你的问题,请参考以下文章

保护 REST API 的最佳方式是啥? [关闭]

使用 Spring Security 保护 REST API

使用 Spring Boot 和 JWT 保护 REST Api

使用客户端令牌保护 REST API 调用

什么是 OAuth,它如何保护 REST API 调用? [关闭]

保护未经身份验证的 REST API