вопрос входа в систему в качестве внешнего разработчика javascript ,,,
Какой тип методов входа в систему следует использовать, если для одного и того же сайта используется несколько серверов и запрос может поступать на любой сервер для одного и того же пользователя?
вариант:
- логин на основе файлов cookie
- вход на основе сеанса
- Вход на основе JWT
- Вход на основе 2FA
1 ответ
а) логин на основе файлов cookie
плохой вариант, cookie - это просто другой тип сеанса, поэтому см. сеанс
б) логин на основе сеанса
плохой вариант, просто cookie с меньшим временем жизни (когда пользователь закрывает сеанс окна, cookie нет). вам нужен центральный сервер кеширования сеансов, чтобы знать, авторизован кто-то или нет. и этот кеш-сервер доступен для всех ваших серверов, поэтому они могут судить, является ли этот сеанс, и, кроме того, если серверы в другом домене, вам необходимо установить cookie для многих доменов одновременно (это работает только для поддоменов, вы не можете установить cookie другого домена верхнего уровня, конечно, есть обходные пути, такие как api для установки cookie или javascript для чтения cookie с этого домена и использования в этом домене). таким образом (файл cookie/ сеанс) легко понять, но вы видите, что центр вызовет задержку, а установка файлов cookie или прокси-файлов cookie с помощью javascript очень утомительна
c) Вход на основе JWT
желательно, вам просто нужно использовать один и тот же ключ для всех серверов, получить токен и знать, кто он
г) логин на основе 2FA
это для безопасности, а не для аутентификации в apis, пароль всегда меняется, и вам нужно другое устройство, чтобы знать текущий проход, вы можете защитить другие методы с помощью 2FA, если хотите. Думаю, может вы имеете в виду OAuth
д) OAuth
лучший и стандартизированный метод, чем cookie, но часто этот сервер аутентификации заботится только об аутентификации и не вмешивается в него слишком много других вещей, поскольку ваш API берет токен от пользователя и спрашивает сервер аутентификации, кто он