Firebase +自定义后端:是否应该在每个http请求之前在客户端上检索jwt令牌?

时间:2018-09-03 21:28:57

标签: android firebase firebase-authentication jwt firebase-admin

我正在创建一个Android应用,该应用中我只想使用Firebase进行身份验证,而我自己的后端用于其余部分。

我一直在关注Firebase documentation,在这里我发现了如何检索jwt令牌。我设法通过POST方法将令牌发送到我的rest api,并使用php JWT Firebase库在其中进行了验证,现在我有点卡住了。

什么时候才是检索令牌的正确时间? 我可以吗?

  1. 在应用程序启动时检索令牌(或注册/登录等),将其存储在变量中,这样我就不必再次检索它,然后随每个http请求发送令牌以授权用户。
  2. 检索一次令牌,然后将其存储在SharedPreferences中。
  3. 在每个http请求之前,我都会检索令牌,这样它就很新鲜,并且可以确定它是有效的。
  4. 仅在应用程序启动时验证令牌,如果该令牌有效,则从客户端中的令牌中提取用户ID,将其存储在变量中,并在以后的HTTP请求中使用该ID来知道是哪个用户发出请求。 / li>

我最想使用第三个选项,但是检索令牌的代码很长,我可以想象我的代码很快就会变得混乱。同样,第四个选项对我来说听起来很不错,但是我觉得这在安全性方面确实是个坏主意。

由于令牌过期时间,我不敢使用第一个和第二个选项。我可以弄清楚令牌在后端是无效的,但是随后我必须通知客户端它无效,生成新令牌然后再次发出请求,这对我来说似乎很复杂。

我应该遵循一些常规做法吗?我的例子之一至少是对的还是我完全错了?

在我的新工作中,我在这个开发领域中是一个新手,无法找到有关在这种情况下应如何进行的很多信息。我将非常感谢您的回答!

1 个答案:

答案 0 :(得分:0)

您应该在每个HTTP调用之前获取ID令牌,并将其包含在请求中。您不必每次都刷新ID令牌(即无需将true传递给getIdToken())。实际上,这可能会使应用变慢。

选项1和2很难正确实现,因为ID令牌大约每小时更改一次。选项4不安全。