|
|
|
REST и Spring JSESSIONID
|
|||
|---|---|---|---|
|
#18+
В данный момент реализую REST вебсервисы в одном проекте. Задался вопросом насколько аутентификация на базе JSESSIONID нарушает принципы REST. JSESSIONID характеризует собой идентификатор сессии на стороне сервера а один из принципов REST говорит о том, что он должен быть stateless. В свою очередь в данном конкретном случае сессия используется только для хранения аутентификационной информации и больше не для чего.. никакого кастомного пользовательского состояния в ней храниться не будет. Можно ли считать такой подход допустимым при создании REST вебсервисов ? Размышляя далее можно привести пример с OAuth2 где пользователю после успешной аутентификации/авторизации присваивается accessToken который обычно хранится в соответствующей таблице в базе данных. Такой подход считается stateless. В случае с JSESSIONID это фактически тот же accessToken только по умолчанию он хранится в другом месте.. в памяти.. на диске. Так же при подходе с использованием JSESSIONID в кластерной среде необходимо настроить репликацию сессий.. но и этот подход очень схож с репликацией базы данных скажем тогда, когда мы используем OAuth2 accessToken. Помогите пожалуйста разобраться в этом вопросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 10:36 |
|
||
|
REST и Spring JSESSIONID
|
|||
|---|---|---|---|
|
#18+
alexanoid1, imhoнарушает. Тем более причины что-то хранить между вызовами сервиса нет необходимости. Но, сам веб сервисы не строил. Загугли какие там способы аутентификации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 10:53 |
|
||
|
REST и Spring JSESSIONID
|
|||
|---|---|---|---|
|
#18+
alexanoid1Можно ли считать такой подход допустимым при создании REST вебсервисов ?Это уже Вам решать - удобно или нет. В одном проекте мы хранили в куке зашифрованный ID записи с сессионными данными в БД. Сам сервер был stateless. Можно было смело запросы на разные ноды кластера посылать и все работало корректно. Вот только со временем пришло ощущение, что делаем велосипед и HTTP-сессии реализуем руками. Настроили weblogic на хранение сессий в БД и все заработало точно также. Только стала доступна аннотация @SessionScoped, а это гораздо удобнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 11:02 |
|
||
|
REST и Spring JSESSIONID
|
|||
|---|---|---|---|
|
#18+
Вопрос из разряда: "осетрина второй свежести", "немного беременная".... etc.. Сервис или REST или НЕТ. IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 11:45 |
|
||
|
REST и Spring JSESSIONID
|
|||
|---|---|---|---|
|
#18+
WGA, просто одним из констрейнтов которые четко декларирует RESTявляется Stateless - The client–server communication is further constrained by no client context being stored on the server between requests. В данном случае сессия все же создается но используется только для хранения аутентификационной информации и не более... вот пытаюсь понять чем такой подход отличается от скажем того же хранения той же информации в БД(который судя по всему этот Stateless констрейнт не нарушает).. Фактически в данном случае сессия является контейнером для аутентификационной информации.. судя по всему таким же идеологически как и например база данных. Именно поэтому хотелось бы получить мнение людей детально разбирающихся в данном вопросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 12:37 |
|
||
|
REST и Spring JSESSIONID
|
|||
|---|---|---|---|
|
#18+
alexanoid1, На stackoverflow пережовано ведь: http://stackoverflow.com/questions/3105296/if-rest-applications-are-supposed-to-be-stateless-how-do-you-manage-sessions http://stackoverflow.com/questions/15051712/how-to-do-authentication-with-a-rest-api-right-browser-native-clients Один из моментов это интепретация понятия stateless. Под ним подразумевается не состояние сервера, ведь запросы вроде того же PUT и DELETE его изменяют. А состояние - клиента. Сервер не хранит состояние клиента и это позволяет масштабировать систему достаточно широко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 13:20 |
|
||
|
REST и Spring JSESSIONID
|
|||
|---|---|---|---|
|
#18+
alexanoid1...Так же при подходе с использованием JSESSIONID в кластерной среде необходимо настроить репликацию сессий.. но и этот подход очень... А этого мало? AFAIK например цена WebLogic с кластерным решением и без оной - две очень большие разницы. А так, ситуации бывают разные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 13:27 |
|
||
|
REST и Spring JSESSIONID
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevAFAIK например цена WebLogic с кластерным решением и без оной - две очень большие разницыЦена - вообще не показатель в техническом вопросе. А так - Blazkowicz прав: то, что сервер отслеживает запросы конкретного UA - чисто его, сервера, внутренние дела. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2015, 08:52 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39128047&tid=2124557]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
181ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 255ms |
| total: | 556ms |

| 0 / 0 |
