gpt4 book ai didi

rest - 使用 Flask-Security 作为 REST API 的一部分

转载 作者:行者123 更新时间:2023-12-03 17:08:06 26 4
gpt4 key购买 nike

Flask-Security docs提及对所有重要 View 端点的 JSON/Ajax 支持。因此,可以通过使用 JSON 对象访问 View 来获得所有内置的 Flask-Security 功能。

但是,现在我正在尝试将它用作 RESTful API 的一部分,但它不起作用,因为它需要一个 CSRF token ,这对于网页是必需的,但对于 API 不是:

{
"meta": {
"code": 400
},
"response": {
"errors": {
"csrf_token": [
"CSRF token missing"
]
}
}
}

解决这个问题的最佳方法是什么?

最佳答案

使用 REST API 时,首选方法是使用 JSON Web token (JWT) 等基于 token 的身份验证。此方案具有不同的安全环境,因为您没有在服务器端生成 HTML 或使用 cookie。我不是安全专家,但据我了解,这意味着您不容易受到跨站请求伪造 (CSRF) 的影响。这就是为什么在 Flask-Security 中关闭 CSRF token 是可以的。

尝试使用基于 PyJWT token 的身份验证方案。要获取 token ,您将凭据发布到“登录”端点并接收 token 作为响应。然后,您必须通过 HTTP header 随每个请求一起发送 token 。您通常可以在 JS 端全局设置它。

这里有一些引用:

注意:Flask-JWT 似乎使用了一段时间未更新的 python itsdangerous 库。这里有讨论:https://github.com/mattupstate/flask-jwt/issues/10同样,我不是安全专家,两个库似乎默认使用相同的算法处理编码/解码。 PyJWT 和 Python-Jose 都列在 jwt.io 上并具有扩展功能。

关于rest - 使用 Flask-Security 作为 REST API 的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26565094/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com