Как работает пользовательская аутентификация в MongoDB Stitch - PullRequest
0 голосов
/ 29 ноября 2018

После Пользовательской аутентификации MongoDB считается, что любой JWT Token с минимальными полями ниже работает с Аутентификацией MongoDB Stitch.Кроме того, токен должен быть выдан External Authentication System

{
  "aud": "<stitch app id>"
  "sub": "<unique user id>",
  "exp": <NumericDate>,
}

Я проверял это, и он также работает

  1. Создано приложение Stitch и включены пользователи с Custom Authentication Provider
  2. Сгенерированный токен пробы через Jwt.io со следующими входами.(Используйте тот же алгоритм и ключ, что и при настройке провайдера нестандартной аутентификации, вот он, HS256 и др.)

enter image description here

Работает вКстати,

  • Это проверяет пользователей в MongoDB Stich Users Collection с уникальным value, предоставленным в sub: "sub": "<unique user id>", и если пользователь присутствует, то он возвращает Object Id для этогоПользователь.
  • Если пользователь отсутствует, то он создает его для ввода и возвращает идентификатор объекта.

Запросы есть,

  1. Почемуон создает нового пользователя, а не возвращает ошибку входа в систему, которая, в свою очередь, работает так, как любой пользователь может войти в систему с любыми учетными данными по требованию?
  2. Если MongoDB Stitch Custom Authentication включает External Authentication System для выдачи JWT, гдепользовательские данные будут фактически храниться при регистрации пользователя?- MongoDB Stitch App Collection или External Authentication API System?

1 Ответ

0 голосов
/ 04 декабря 2018

Вот ответ от Поддержка MongoDB

Почему Stitch создает нового «пользователя»

«Пользователь» Stitch создает вэтот сценарий является внутренним пользователем.Этот «пользователь» также содержит пользовательские данные и метаданные, предоставленные JWT, и не хранится вместе с другими вашими коллекциями в кластере Atlas, с которым связано ваше приложение.Обратите внимание, что этот «пользователь» не доступен для MongoDB без использования триггера или другой функции для его загрузки в базу данных.

Почему не возвращается ошибка входа

Ошибка входа в систему не возвращается, потому что пользовательский поставщик аутентификации проверяет только подписанный JWT из внешней системы на предмет его собственной копии ключа подписи.Если подписи совпадают, то вход считается успешным.

Ответственность за отказ входа в систему несет внешний поставщик аутентификации;not Stitch.

Где будут храниться пользовательские данные

Пользовательские данные должны управляться в вашей базе данных.Наиболее эффективный способ интегрировать это с провайдером пользовательской аутентификации - это использовать Аутентификационный триггер для типов операций Создание и / или Вход в систему.Это позволит вам запускать функцию Stitch каждый раз, когда инициируется событие аутентификации.

Существует пример использования триггеров аутентификации в блоге MongoDB , который может помочьобъясните процесс дальше.

...