Nano Hash - криптовалюты, майнинг, программирование

Зачем нужен токен firebase для фронтенд-хранилищ?

Я делаю веб-приложение. Лицевая сторона - это реакция, на стороне сервера - rails api, и я использую аутентификацию firebase. Теперь я получаю токен firebase и устанавливаю заголовок авторизации при каждом вызове rails api, как показано ниже.

client.interceptors.request.use(
  async (config) => {
    config.headers['Content-type'] = 'application/json'
    config.withCredentials = true
    var token = await firebaseApp.auth().currentUser?.getIdToken()
    config.headers['Authorization'] = `Bearer ${token}`
    return config
  },
  (error: AxiosError) => {
    throw new Error(error.message)
  }
)

Но я нашел несколько способов хранить токены, небезопасное локальное хранилище, только http cookie. Зачем нужен токен firebase для фронтенд-хранилищ? Плохо ли получать токен каждый раз при вызове rails api?


Ответы:


1

Токены идентификатора Firebase в основном представляют собой JWT, подписанные Firebase. Теперь представьте сценарий, в котором вам нужно идентифицировать пользователя на вашем сервере. Вы, вероятно, передадите UID пользователя в HTTP-запросе, что небезопасно, поскольку его можно легко перебрать, если на вашем сервере нет какого-либо ограничения скорости.

Что я имел в виду под подписью?

JWT выглядит примерно так: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Данные, хранящиеся в указанном выше JWT:

{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}

Вам необходимо проверить эти идентификаторы Firebase IDTokens с помощью Firebase Admin SDK. Я не знаю, работает ли это с Ruby, но стоит проверить ссылку выше.

Их проверка вернет либо объект с информацией об авторизации пользователя, либо ошибку, если это недопустимый JWT. Вы всегда должны передавать этот JWT в своих REST-запросах на свой сервер, потому что они не могут быть подобраны. Кто угодно может создать JWT (IDToken) с таким же содержимым, но он не знает вашей подписи. Для этого им потребуются учетные данные вашей учетной записи службы Firebase.

Кроме того, срок действия JWT в конечном итоге истекает (я полагаю, через час). Так что получать жетон снова и снова - неплохо. Вот для чего они предназначены. Краткосрочный доступ.

Я рекомендую вам посмотреть это Учебное пособие по JWT. Просто не забудьте передать idToken в свой REST API для аутентификации пользователей, а не их UID.

08.11.2020
  • Спасибо за Ваш ответ. Понятно. 13.11.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..