2013-12-07 3 views
4

Мне очень понравилось объяснение того, как работают клиентские сеансы Firebase. Вот как выглядит токен Firebase в локальном хранилище. Что представляют эти ценности и почему?Анатомия сеанса на стороне клиента Firebase

Edit: Это объясняет некоторые вещи 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=' 
} 
+0

Google ничего не нашел? –

+0

Нашел некоторое объяснение в документах firebase для «пользовательского входа», но все еще несколько тайн. – sintaxi

+0

Обратите внимание, что это * только * для Firebase Simple Login, служба делегирования аутентификации, основанная на генерации пользовательского входа Firebase/вручную. –

ответ

7

[инженер Firebase] Полезный груз, который вы видите, в зашифрованном хранилище больших двоичных объектов используется упорствовать метаданные сеанса для Firebase Simple Login.

Обратите внимание, что это не используется в самой Firebase, просто служба простого входа (делегированное создание токена), которая построена поверх пользовательского входа (генерация пользовательского маркера).

Firebase Simple Login включает полезную встроенную функцию для сохранения пользовательских сеансов в течение некоторого периода времени (настраивается до 30 дней). При создании этого, мы хотели, чтобы обеспечить несколько различных вещей:

  • После того, как пользователь вошел в систему и создается новая сессия, сессия должна сохраняться на стороне клиента и может быть загружен без туда и обратно на сервер, поэтому на него можно ссылаться даже в автономном режиме.
  • Метаданные сеанса должны храниться таким образом, чтобы они были безопасными.
  • Основные метаданные токена и сеанса должны быть очищены через определенный промежуток времени и должны выполняться браузером.

Firebase не заставляет вас использовать SSL для вашего приложения, поэтому для хранения конфиденциальных данных в файлах cookie не может быть и речи. Браузеры позволяют устанавливать срок действия файлов cookie, но не локального хранилища, что делает локальное решение для хранения данных нецелесообразным. Кроме того, хранение данных в файлах cookie против вашего домена приведет к тому, что данные будут отправляться по кабелю по каждому запросу, используя ненужную пропускную способность.

Следовательно, Firebase Simple Login использует гибридное решение и хранит данные как в куки, так и в локальном хранилище, используя преимущества каждого из них. Данные, хранящиеся в браузере, также зашифровываются, что требует доступа к полезной нагрузке локального хранилища и полезной нагрузке файла cookie (до истечения срока действия) для доступа к метаданным сеанса.

+3

Если я понимаю это право, вы шифруете токен JWT в localstorage, используя SJCL. Откуда вы получаете свой секрет (для использования в шифровании), как вы это продолжаете? – flexterra

+1

Не могли бы вы подробнее рассказать о том, как работает управление сеансом на стороне клиента под капотом: каковы преимущества использования файлов cookie/localStorage и как? Как я понимаю, Firebase Simple Login теперь является частью базовой библиотеки Firebase JS и очень стандартная особенность. –

Смежные вопросы