使用 google firebase 和 spring 进行身份验证

Posted

技术标签:

【中文标题】使用 google firebase 和 spring 进行身份验证【英文标题】:Authentication with google firebase and spring 【发布时间】:2022-01-12 01:39:31 【问题描述】:

我想使用来自 google firebase 的身份验证,并将其与 spring boot 集成。 我不确定我是否知道如何实现角色/权限。 我想到了这种情况:

    在使用 firebase 成功验证后,前端向安全的 Spring 后端端点发送请求,并且此端点上的数据包含用户应具有的角色,因此前端使用此数据为用户设置声明。后端使用声明在访问端点时授权用户。

这样好吗,还是有更快/更好的解决方案?

【问题讨论】:

【参考方案1】:

这听起来是个好方法。查看 verifying ID tokens 上的 Firebase 文档,因为一旦您的后端收到来自客户端的令牌,这将是您的起点。

此时我能做的唯一补充是,Firebase 自己的许多后端服务会缓存最近解码的令牌(以未解码的令牌作为键),以允许后续请求更快地查找该令牌的信息。虽然这不是必需的,但一旦您准备好,它就可以轻松加速。

【讨论】:

好吧,我按照上面的描述做了,一切正常,但我有一个问题。刷新令牌呢?我在大约 1 小时前为我的令牌设置了自定义声明,用户仍然拥有此声明。所以我不必关心我的声明是否会在令牌刷新或类似的情况下消失?我只需要设置它,当用户在注销后登录时? 如果添加/删除声明,ID 令牌将更改。由于我们将解码后的值存储在由 ID 令牌本身作为键的缓存中,这意味着我们不会找到新 ID 令牌的任何条目,我们将解码新令牌并获取用户的最新声明。 所以如果我理解正确的话,在编程方面,由于缓存我只需要设置一次声明,或者我只想更改它,对吗?

以上是关于使用 google firebase 和 spring 进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Google Play 和 Firebase 帐户

使用firebase和flutter登录google后获取用户详细信息

从firebase删除数据后无法使用google和facebook登录

使用 google firebase 和 spring 进行身份验证

没有firebase的谷歌登录

GetUserByProviderAccountIdError 与 Google 和 Firebase 适配器 Next Auth