当前位置: 首页 > 知识库问答 >
问题:

使用Vaadin Flow和Firebase进行密码身份验证

单于善
2023-03-14

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

这可以很好地工作,并且可以根据具有虚拟用户的InMemoryUserDetailsManager检查登录尝试。正如您在教程中所看到的,这是在扩展了VaadinWebSecurityConfigurerAdapter的WebSecurity类中配置的。

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

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

共有1个答案

傅恺
2023-03-14

Firebase有两种类型的SDK:

  • 其常规SDK设计用于客户端不受信任的环境,如web前端、Android应用程序或iOS应用程序

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

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

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

您可以在Admin SDK中创建自己的ID令牌,但流程保持不变,您通常使用它来实现自定义登录提供程序。

 类似资料:
  • 是否可以在Flatter中使用用户名和密码(而不是电子邮件和密码)实现Firebase身份验证?有没有办法用Firebase Auth插件来实现这一点?

  • 我正在使用生成用户密码的强哈希值。我想登录用户,但不想通过网络以明文形式发送密码,如何检查密码是否正确(没有往返),因为它是加盐的? 我有一个客户端/服务器场景。客户端是台式计算机上的应用程序(不是网站,也不是超文本传输协议服务器)。 我怎样才能做到这一点?我只是走了这么远:我正在客户端上生成salt散列,从中形成一个mcf并将其发送到我的服务器。将mcf保存到数据库。我没有发送密码,只发送了实际

  • 我想知道是否有能力登录与电子邮件和用户id+密码,我有一个项目,我想让用户添加一个唯一的号码(实际上是我们公司提供的工作识别号码),以能够登录到该计划将保持私人公司就业。 我需要firebase认证拒绝登录,即使电子邮件和密码是正确的,但用户id是错误的。

  • 客户已创建密钥存储库并存储凭据。为了验证密钥存储库,我已经在节点中创建了应用程序,并使用客户端id和客户端机密,我能够读取机密。但是现在客户不想使用客户id和客户机密,而是使用AZURE的用户名和密码来访问程序中的keyvault。它是一个没有MFA的keyvault访问的专用用户。 我不确定我们是否可以从节点JS使用用户名和密码访问keyvault。敬请建议。 谢谢

  • 我试图建立一个认证系统与Laravel 4与Facebook登录。我正在使用Laravel 4的madewith love/laravel-oAuth2包。 当然,当用户登录Facebook时,没有密码可以添加到我的数据库中。但是,我正在尝试检查数据库中是否已经有用户id,以确定是否应该创建一个新实体,或者只是登录当前实体。我想使用Auth命令来实现这一点。我有一张叫做“粉丝”的桌子。 这就是我正

  • 我正在尝试使用Shiro对我正在构建的JSF Web应用程序进行身份验证和授权。不幸的是,我仍然有一些困难缠绕我的头如何把所有的东西放在一起。 我已经成功地(100%使用shiro.ini文件)将身份验证配置回存储测试凭据集的JDBC领域。当凭据以明文形式存储时,它对我来说非常有效。 我的最终目标是统一MySQL数据库中的现有凭证集。密码存储为SHA-256盐哈希。我花了一整天的时间阅读可用的文档