努力让它完全工作 - 这是我的应用程序工作流程:
React 前端 - 用户直接使用 Cognito 进行身份验证(使用 AWS Amplify) - 我的工作正常。前端需要处理这个问题,因为它单独直接调用其他 AWS 服务。
DRF 后端 - 然后 React 使用 Amplify.API 对 DRF 端点进行 API 调用,其中在请求标头中包含 x-amz-security-token(这似乎是 Amplify 对 cognito-idp 服务的调用返回的会话令牌)。所以现在后端有会话令牌(但没有访问令牌或刷新令牌)
然后,后端只需要根据 Cognito 验证前端用户(我假设其经过身份验证的身份由会话令牌表示)是否是有效且当前经过身份验证的用户。所以后端需要单独调用 Cognito 来验证这一点。
这是我失败的地方 - 我看过 django-warrant,但我无法从文档中辨别这是否适合我的用例(甚至如何真正使用它 - 默认设置建议的结果在各种boto3 错误,缺少凭据等)。我还查看了授权并直接查看了 boto3 和 botocore,但我不清楚在哪里实现所有这些。我错过了在这些库中看到某种 is_user_valid 和 is_session_token_valid 方法吗?
如果有人知道如何使用 django-warrant 直接执行此操作,这会有所帮助,如果不是关于最佳前进方式的一点建议也将不胜感激(我是否编写自己的身份验证支持或中间件来拦截请求,以某种方式进行身份验证 w / boto3 或 botocore,还是什么?)
非常感谢