Является ли использование сессий в RESTful API действительно нарушением RESTfulness? Я видел много мнений, идущих в любом направлении, но я не уверен, что сеансы RESTless. С моей точки зрения:
- аутентификация не запрещена для RESTfulness (в противном случае использование служб RESTful было бы мало)
- аутентификация выполняется путем отправки маркера аутентификации в запросе, обычно заголовок
- этот токен аутентификации должен быть каким-то образом получен и может быть отменен, и в этом случае его необходимо обновить
- токен аутентификации должен быть проверен сервером (иначе он не будет аутентификацией).
Итак, как сеансы нарушают это?
- клиентская сторона, сеансы реализуются с использованием файлов cookie
- cookie - это просто дополнительный HTTP-заголовок
- cookie сеанса может быть получен и отменен в любое время
- Файлы сеансов cookie могут иметь бесконечный срок службы, если необходимо
- идентификатор сеанса (токен аутентификации) проверяется на стороне сервера
Таким образом, для клиента куки файл сеанса точно такой же, как и любой другой механизм проверки подлинности на основе HTTP-заголовков, за исключением того, что он использует заголовок Cookie
вместо Authorization
или другого проприетарного заголовка. Если бы не было сеанса, связанного с значением cookie на стороне сервера, почему бы это изменить? Реализация серверной стороны не должна касаться клиента, пока сервер ведет себя RESTful. Таким образом, файлы cookie сами по себе не должны создавать API RESTless, а сеансы - это просто файлы cookie для клиента.
Я ошибаюсь в своих предположениях? Что делает cookie сеанса RESTless?