Firebase客户端会话的解剖结构



我很想解释一下Firebase客户端会话是如何工作的。以下是Firebase放入本地存储的令牌的样子。这些价值观代表什么,为什么?

编辑:这解释了一些事情https://www.firebase.com/docs/security/custom-login.html

{ 
  iv: '9TCC9J+eqdgwYfLyg7nwWQ==',
  v: 1,
  iter: 1000,
  ks: 128,
  ts: 64,
  mode: 'ccm',
  adata: '',
  cipher: 'aes',
  salt: '7I8yHru1oBc=',
  ct: 'Z/yBHbOCEND7GW6fuTtT47Sw3nyo7vCb08Zs0CbspXv3JbGCVvtPbED8xsjf2Kx8TUyVKfXSfm8NQPSUVI0UY6R00UrtV8gg60kBwzcLSK6rDEfus4RvQr3eIHmMVLgk42SWJb8Ldxxnr7EeHO8gd3zGL8FivCL+oQE/8EJgm6fjubWhJsSGQ0JImz/wMKsG80UzX0WqaAJWE5BVMpLdgE3s14blT79M+CN4ZI7+NVJxUF1MEV9v/pKmB7OT7iPKXKAr2f1eCpeYfNS70u93TWzocgwiw6SVy7mg3b2U0cCrFS60yJL/5qPyE96E7R7kReNQVmWIt6zJvvJIWpkMn3M9T8SaKn+m57pd0d+NwsHXpqW/Q0fpAydgc9jL1UOAX4igXUUsK4qS5XRiuz3v8qrhw/tBLyk7j+plIMgvEuNpnmLOelbhwp8dgNWDgCNU2E5+kjKR/SVN5nxB5aWcXM9S9gLDS+NIW0/Rrf/RJfCqe46d+a0UO+9Elhp3vcYC+Zjk9lVnMyn+ZnQsnFooGsKO367QP20nQRCDb372jfhqNYi3AK5o/Dgu5oytzmJdB0EQ26WQvqurBiGTGH489PnyaGqUgAd2N5mCGqdoudde/dSJBO48CUic4b98UkdSraBdZxVK7Go3CzJmPX6I6iiI91vi1NZn9wlOvB4Toj+XSFTi7boy+t0W2oRneA5ZVo1ZsY3gRlpzJq+3tUOMOe7RlvsJxHUhFyQ6/KuyYeQXmfmp21fmiXf5hIOkDnfU5qmdTqHmBW9AYXFPi+GohdL9421GemDk1YeK0f2HOjgKw/qkzJ/bT02/ixJdpEZnIf2q7h9OgCwchuvb0bBs0WVRBxsmUMmQMM6DD+tHPHG0fbRVs6e5GsvD78bvZOdDFwU8wAMGrfKPaC4F1WqwfjHNPqkjrTAlfcwcudQRBZ++1l7Jb6rTzHQsEuTkHLRLH0E3wCk9LRX3Gt5fdau1yCZi5XatpyWxdN2QgXkAFPUDrljczu8r/3tEjbzD0DLmFvdTaVHzuarXtBZsS6+piR6b8md+IBv47wZ8fBsGUDXsrY9eFISDdL4CfWWpVIdzdIVUcGiJnCsmK8zUGNHIdezgadANwHrXc6QYiTDAO7eVrTyjcCh2odMUipmjsPkpM5H7D+fqfSIE12X6PuejYX7Yikf0WGvymqSWEFLwpUIO0b87hlmVMYKJphJJGNurT87qWgqFpoaTiXQLZfWL9wm+ZEa5zq2Fo8bO3/PtbFJqBgXgxz/HQOzOQluHWk4hitnLiWVOxoAOLENV1XEG++e355tmdvak/d1xqxfiiyF67dRQKPRsw6wE9HX/9gqPXPI7LLx0IOzY/JcHu+lwiqa872azTyX4f5XsSmTK0GoZCX5ST9fdi2ApM87guA9/IlnmbBzUocqizDYD48wNgQ6vElZY3SFG+/7xz3WyfkxrQi1nqEmPLcTFalC5sdQUxTniNjciuXhCrtjXybnUBKlZBUS76jrIFNF8XZB5uL/Thv3o0aevk3/d+VebmD7r4T+Ui+BfjeHjLIn2/iVvM9WEwk+Zfyg='
}

[Engineer at Firebase]您看到的有效负载是加密的存储blob,用于为Firebase Simple Login持久化会话元数据。

请注意,这并没有在Firebase中使用,只是在自定义登录(自定义令牌生成)之上构建的简单登录服务(委托令牌生成)。

Firebase Simple Login包括一个有用的内置功能,可以将用户会话持续一段时间(最多可配置30天)。在构建这个时,我们希望确保一些不同的东西:

  • 一旦用户登录并创建了会话,会话就应该在客户端上持久化,并且可以在不往返于服务器的情况下加载,因此即使在离线时也可以引用它
  • 会话元数据应该以安全的方式存储
  • 基础令牌和会话元数据必须在一段时间后清除,并且应由浏览器强制执行

Firebase不会强制您在应用程序中使用SSL,因此将敏感数据存储在cookie中是不可能的。浏览器允许您设置cookie的过期时间,但不能设置本地存储,这使得仅限本地存储的解决方案不切实际。此外,将数据存储在针对您的域的cookie中会导致每次请求都会通过有线发送数据,使用不必要的带宽。

因此,Firebase Simple Login使用混合解决方案,将数据存储在cookie和本地存储中,充分利用两者的优势。存储在浏览器中的数据也经过加密,要求您同时访问本地存储负载和cookie负载(在到期之前),以便访问会话元数据。

最新更新