Внешний сервер Grails без сохранения состояния? - PullRequest
0 голосов
/ 31 мая 2018

У меня есть один веб-сервер Grails (3.3.5), и я заинтересован в улучшении доступности, и я хотел бы добавить еще один сервер и поставить балансировщик нагрузки перед ним.

Вместо того, чтобы делиться сеансами между серверами или использовать липкие сеансы, я хотел бы знать, есть ли хороший способ иметь внешний сервер без сессий.Я не использую сеансы для чего-либо другого, кроме использования Spring-Security для проверки токена сеанса, который он использует для идентификации пользователя.

Я хотел бы найти систему аутентификации на основе токенов, подходящую дляконец так, что токен является безопасным и достаточным для идентификации текущего пользователя.

Я видел плагин grails-spring-security-rest, который выглядит многообещающе, но кажется, что все используют его для бэк-эндаостальные api звонки.Подходит ли это также для аутентификации на стороне клиента, когда вы не сохраняете данные приложения в сеансе веб-приложения?

Ответы [ 3 ]

0 голосов
/ 01 июня 2018

Поскольку Grails построен на Spring Boot, вы можете получить доступ ко всем функциям Spring Session (https://docs.spring.io/spring-session/docs/2.0.x/reference/html5/),, который включает в себя возможность обмениваться данными сеанса между экземплярами сервера с некоторым хранилищем данных вместо хранения в памяти.

В этих документах вы найдете указатель на руководство с примером Grails 3.1, в котором в качестве хранилища используется Redis. https://github.com/spring-projects/spring-session/tree/2.0.3.RELEASE/samples/misc/grails3

0 голосов
/ 01 июня 2018

Подходит ли она также для аутентификации переднего плана, когда вы не сохраняете данные приложения в сеансе веб-приложения?

Да, вы можете использовать токены JWT во внешнем интерфейсе.Вам необходимо правильно настроить фильтры безопасности ваших контроллеров, чтобы они не использовали куки для аутентификации, но они ищут JWT.

См. http://alvarosanchez.github.io/grails-spring-security-rest/latest/docs/#_plugin_configuration для конфигурации конечных точек, которые должны проверять токены JWT.

Посмотрите на https://github.com/hantsy/angularjs-grails-sample/wiki/3-basic-auth для примера без сохранения состояния с Angular.

0 голосов
/ 01 июня 2018

Если вы не используете объекты session в вашем контроллере, то tomcat не создаст для вас никаких сессий.

Также вы можете определить свои контроллеры как

static singleton = true

, тогда они будут созданы не для каждого запроса.

Теперь, если вы все еще хотите использовать сеансы, вы можете использовать что-то вроде Cookie Sessions и хранить ваши данные в cookie-файлах вместо памяти tomcat.

Я не использовал grails-spring-security-rest, но вы должны иметь возможность настроить spring-security-core чтобы быть без сессии.Вы должны установить scr.allowSessionCreation на false и использовать remember-me.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...