【问题标题】:Password Authentication with Vaadin Flow and Firebase使用 Vaadin Flow 和 Firebase 进行密码验证
【发布时间】:2022-02-04 22:56:04
【问题描述】:

我使用https://start.spring.io 建立了一个 Spring Boot 项目,包括 Spring Security 和 Vaadin。然后我将 Vaadin 版本设置为 22.0.4 并按照本教程使用 Vaadin Flow 和 Spring Security 设置登录页面:https://vaadin.com/docs/v22/flow/tutorial/login-and-authentication

这可以完美运行,并针对具有虚拟用户的InMemoryUserDetailsManager 检查登录尝试。正如您在教程中看到的,这是在 WebSecurity 类中配置的,它扩展了 VaadinWebSecurityConfigurerAdapter

现在,我想使用电子邮件地址和密码对 Firebase 用户进行身份验证。因此,我建立了一个 Firebase 项目并添加了一个用户。我一开始以为可以使用 Firebase Admin SDK 进行登录,但现在我认为这是不可能的。

如何使用 Vaadin Flow 作为前端框架在 Spring Boot 应用程序中使用电子邮件地址和密码验证 Firebase 用户?

【问题讨论】:

    标签: spring-boot spring-security firebase-authentication vaadin vaadin-flow


    【解决方案1】:

    Firebase 有两种类型的 SDK:

    • 其常规 SDK 旨在用于客户端、不受信任的环境,例如 Web 前端、Android 应用或 iOS 应用。
    • Admin SDKs 设计用于(通常是服务器端)可信环境,例如您的开发机器、您控制的服务器或 Cloud Functions/Cloud Run。

    只有常规的客户端 SDK 具有让用户登录的方法。对于 Admin SDK,这不是必需的,因为它们已经在受信任的环境中运行,并且这会以其他方式建立其凭据(通常通过凭据您从 Firebase/Cloud 控制台下载的文件)。

    因此,无法在您的服务器端代码上登录 Firebase。这也没有多大意义,因为很多用户可能会同时访问服务器,那么当前用户是谁?

    相反,在 Firebase 中,您通常通过常规 SDK 之一在客户端对使用进行签名,然后(如果需要)将 ID 令牌传递到服务器,您的代码(通过 Admin SDK,如果可用)可以在服务器上decode that ID token 并确定发出请求的用户。

    可以在 Admin SDK 中使用mint your own ID token,但那里的流程保持不变,您通常使用它来实现自定义登录提供程序。

    【讨论】:

    • 所以我需要使用 JS API 并将其放入自定义 Vaadin 组件中来处理登录:firebase.google.com/docs/auth/web/password-auth ...如果有人分享这样的集成会很好。
    • Firebase 登录的 Vaadin Flow 集成还是有的。如果没有人分享示例,我会自己弄清楚。稍后再回到这里。
    猜你喜欢
    • 2019-08-28
    • 2021-12-14
    • 2019-06-11
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多