Как правильно работает аутентификация пользователя?
=====================================================

 Всем привет! Вопрос теоретического характера, без привязки к языку, используемому на сервере.  
  

Прочитал несколько статей по аутентификации пользователя, но нет четкого понимания.  
  

1. Регистрация.  
  

 Пользователь впервые регистрируется на сайте, заполняет данные формы. После проверки соответствия требованиям к имени и паролю данные отправляются на сервер, где сохраняются в БД (три поля - user id, login, password в зашифрованном виде и хеш-строка, пока пустое поле).  
  

2. Аутентификация.  
  

 Пользователь вводит пару логин-пароль, сервер проверяет данные. Если они корректны, то два варианта:  

 a) формируется случайная длинная строка, хешируется и записывается в строку из БД по данному юзеру и в cookies, например key=jdfhfdkjJHTJkdjsh9874hjgf;  

 b) на сервере, например, PHP, создается объект сессии и уже его id отправляется польлзователю в куках и на сервере он связывается с данным юзером.  
  

3. Logout  
  

 Если пользователь удаляет куки в браузере, очищая историю, или нажимает на кнопку Выйти на сайте, то у него куки удаляются и при переходе на очередную страницу сайта сервер данные (хеш строку или id сессии) не получает и перекидывает на страницу входа.  
  

Собственно вопросы. 1) верен ли алгоритм описанный выше? 2) если срок действия куки указан неделя (или безсрочно) и сессия на сервере хранится, то пользователю достаточно этой записи в куках, чтобы зайти на сайт без аутентификации? 3) если злоумышленник ворует данную куку, он может с идентичной записью (id сесси или хеш-строка) также зайти на сайт без аутентификации? 4) как работает аутентификация через токен? где прочитал, что эта та же случайная строка, зашифрованная, или что токены используются для аутентификации на сторонних доверенных сервисах, например, пользователь заходит через соц. сети. 

 иногда "правильно" - это догма  
  

проще всего использовать такой метод:  
  

клиент обменивается с сервером через кроссдоменный ajax по https   

оправляет и получает json  

внутри него среди остальных данных пароль авторизации  
  

то есть сервер принимает запрос клиента и проверяет пароль  

передаваемые данные надежно защищены  
  

такой способ работает на сайтах и в phonegaap-приложении