Может кто-нибудь дать мне пошаговое описание того, как работает аутентификация на основе файлов cookie? Я никогда ничего не делал, включая аутентификацию или куки. Что нужно сделать браузеру? Что нужно сделать серверу? В каком порядке? Как мы обеспечиваем безопасность?
Я читал о разных типах аутентификации и о файлах cookie, но мне хотелось бы получить базовое описание того, как использовать их вместе - я только прочитал, что они часто используются вместе, но не смог найти описание того, как.
authentication
cookies
browser
Mastid
источник
источник
Ответы:
Печенье - это просто элемент в словаре. У каждого элемента есть ключ и значение. Для аутентификации ключ может быть чем-то вроде «username», а значением будет имя пользователя. Каждый раз, когда вы отправляете запрос на веб-сайт, ваш браузер будет включать файлы cookie в запрос, а хост-сервер будет проверять файлы cookie. Таким образом, аутентификация может быть выполнена автоматически таким образом.
Чтобы установить cookie, вам просто нужно добавить его в ответ, который сервер отправляет после запросов. Браузер добавит куки при получении ответа.
Существуют различные параметры, которые вы можете настроить на стороне куки-сервера, например время истечения срока действия или шифрование. Зашифрованный файл cookie часто называют подписанным файлом cookie. По существу, сервер шифрует ключ и значение в элементе словаря, поэтому только сервер может использовать эту информацию. Так что куки будут в безопасности.
Браузер сохранит файлы cookie, установленные сервером. В заголовке HTTP каждого запроса, который браузер делает к этому серверу, он будет добавлять куки. Он будет добавлять куки только для доменов, которые их устанавливают. Example.com может установить cookie, а также добавить опции в заголовок HTTP для браузеров, чтобы отправить cookie обратно в субдомены, такие как sub.example.com. Для браузера было бы неприемлемо когда-либо отправлять куки в другой домен.
источник
Я понимаю, что это несколько лет назад, но я подумал, что мог бы расширить ответ Конора и добавить немного больше к обсуждению.
Шаг 1: Клиент> Регистрация
Прежде всего, пользователь должен зарегистрироваться. Клиент отправляет HTTP-запрос на сервер, содержащий его / ее имя пользователя и пароль.
Шаг 2: Сервер> Обработка регистрации
Сервер получает этот запрос и хэширует пароль перед сохранением имени пользователя и пароля в вашей базе данных. Таким образом, если кто-то получит доступ к вашей базе данных, он не увидит реальные пароли ваших пользователей.
Шаг 3: Клиент> Логин пользователя
Теперь ваш пользователь входит в систему. Он / она предоставляет свое имя пользователя / пароль и снова, это публикуется как HTTP-запрос к серверу.
Шаг 4: Сервер> Подтверждение входа
Сервер ищет имя пользователя в базе данных, хэширует предоставленный пароль для входа и сравнивает его с ранее хешированным паролем в базе данных. Если это не произойдет, мы можем запретить им доступ, отправив код состояния 401 и завершив запрос .
Шаг 5: Сервер> Генерация токена доступа
Если все получится, мы создадим токен доступа, который однозначно идентифицирует сеанс пользователя. Находясь на сервере, мы делаем две вещи с помощью токена доступа:
Отныне файлы cookie будут прикрепляться к каждому запросу (и ответу) между клиентом и сервером.
Шаг 6: Клиент> Создание запросов к страницам
Вернувшись на клиентскую сторону, мы теперь вошли в систему. Каждый раз, когда клиент делает запрос на страницу, требующую авторизации (т.е. они должны войти в систему), сервер получает токен доступа из cookie и проверяет его на соответствие одному из них. в базе данных, связанной с этим пользователем. Если это проверено, доступ предоставлен.
Это должно начать вас. Обязательно очистите куки при выходе!
источник
Проверка подлинности на основе файлов cookie
Проверка подлинности на основе файлов cookie обычно выполняется в следующие 4 этапа.
Браузер будет отправлять этот идентификатор сеанса при каждом последующем запросе, идентификатор сеанса сверяется с базой данных, на основе этого идентификатора сеанса веб-сайт идентифицирует сеанс, принадлежащий тому клиенту, а затем предоставляет доступ к запросу.
Как только пользователь выходит из приложения, сеанс уничтожается как на стороне клиента, так и на стороне сервера.
источник