您好我的网站运行在appengine上使用flask作为后端框架,我们使用库Flask-OAuth,Flask-Login构建了我们的身份验证和会话管理。
但是现在我需要使用firebase进行身份验证。 我可以在firebase教程之后创建示例应用程序,但我不知道如何与现有应用程序集成。
在firebase团队提供的Firenotes示例中,他们使用两个独立的服务前端和后端。
我想在login.html页面中使用firebase代码,并且一旦客户端验证将信息传递给/ profile url - >使用Flask-Login记录数据库和登录用户中的user_id。
我不确定上述流程是否正确,我不确定将来是否正确。
请尽快帮助解决任何想法!
答案 0 :(得分:1)
Flask登录使用基于会话的身份验证。客户端使用身份验证方案登录。由于您使用的是Flask-OAuth,因此是oauth流程。如果用户成功进行身份验证,则Flask-Login在令牌交换步骤期间发送响应,并设置一个HTTP HTTP cookie(这意味着javascript无法访问它),该cookie具有用户会话唯一的令牌。然后,客户端使用该令牌在会话持续时间内验证将来的请求。服务器可以随时使会话无效,从而迫使客户端再次登录。
同时,firebase身份验证是JSON Web令牌(JWT)身份验证方案。完成登录流程后,firebase API从Google的应用服务器中检索JWT。
要验证请求,您需要在每个请求上传输该JWT。您的服务器还必须验证JWT,以确保它有效且未过期。
您会注意到,firebase SDK和库未指定JWT到达服务器的方式。我建议使用Authentication: JWT <google's jwt>
标头。
解决问题的一种方法是使用JWT完成初始登录流程,然后从那里依靠基于会话的身份验证。您将设置一个预期并验证JWT的登录端点,并使用设置的cookie标头进行响应。从那时起,您将继续使用flask-login提供的基于会话的身份验证。
Google的文档中实际上有一个示例:https://firebase.google.com/docs/auth/admin/manage-cookies