Добрый день ! Есть идея создать один сервис, на котором будет авторизация. Долго думал над имплементацией, пришел к интересной идее: создать полностью автономное JavaScript приложение, которое будет общаться с REST сервером. Интересует следующий вопрос: по идеологии, REST должен быть stateless, что означает, не хранить никакую информацию о сеансе. Т.е. каждый запрос должен содержать ровно необходимое количество данных для правильного ответа. Что меня настораживает, так это авторизация/аутентификация. Получается, что бы полностью придерживаться идеологии REST, необходимо с каждым запросом передавать пару логин/парол пользователя ? А JavaScript app будет хранить их в localstoage и отправлять каждый раз с запросом. Я мыслю в правильном направлении ? С удовольствием выслушаю идеи/критику. P.S. Извиняюсь, если не правильно выбрал тему форума, эта показалась наиболее подходящей.
Requests are Stateless – Central to REST is the idea of statelessness. That is, each request handled by the server can be done without knowing anything about any previous request. Or to put it another way, the client supplies all necessary information in the request needed by the server to fulfill it. (c) REST – Can You do More than Spell It? Перевод: Запросы должны быть stateless - центральная идея вокруг REST'a это statelessness. Т.е., каждый запрос, обрабатываемый сервером, может быть выполнен им, не зная ничего о предыдущих запросах. Или, другими словами, в запросе клиент предоставляет всю информацию, необходимую для того, что бы сервер мог его выполнить. Я хочу написать REST сервис, который будет наиболее близок к идеологии RESTful. И считаю, что поскольку всё пока что в процессе проектирования, сейчас нужно к этому относиться наиболее внимательно и осторожно. Идентификатор сессии подразумевает, что сервер уже знает, что клиент аутентифицирован. Кстати, что меня больше всего тревожит, это безопасность такого рода общения между клиентом и сервером. Будет ли безопасность клиента в таком случае подвержена большей опасности (MITM) ? Предположим два случая, если используется https и http. Как мне кажется, большой разницы нет, потому что с таким же успехом можно было бы перехватить идентификатор сессии и получить доступ к сессии, но всё же, это всё таки более безопасно, чем если злоумышленник получит username/password.
кстати, вот это не факт идентификатор сессии подорумевает что сессия начата. а залогинился клиент или нет - другой вопрос.
Хочу убить двух зайцев одним выстрелом - к АПИ можно будет обращаться из других приложений, например, мобильных. Но любопытство на первом месте, хочу подтянуть JavaScript : ) Отчасти согласен, но в большинстве случаев это будет означать именно то, что юзер залогинился.
REST не запрещает сделать запрос, получить в ответ токен и использовать его далее в запросах. http://rest.elkstein.org/2008/01/how-do-i-handle-authentica ... -rest.html