Существует две основные стратегии:
- защитить точки входа;
- защищать удаленные службы.
Безопасные точки входа
Самый простой способ - ограничить доступ к файлам html / js, сгенерированным GWT, с помощью обычных инструментов безопасности веб-приложений:
- Spring Security;
- ограничения web.xml.
Это может позволить вам иметь, например, AdminEntryPoint
и UserEntryPoint
.
Защита удаленных служб
Если вышеуказанного решения недостаточно, вы можете копать глубже. Я сделал это с помощью Spring Security. Я не нашел 100% чистого способа интеграции Spring Security с GWT, поэтому добавил немного клея. Кратко:
- создал аннотацию
@AllowedRoles
, в которой перечислены роли пользователей, которым разрешен доступ к этому методу службы;
- создал
UserDetailsService
, который позволяет проверять текущего пользователя (подробности см. в SecurityContextHolder javadoc );
- создал аспект Spring, который соответствует всем методам, аннотированным вышеупомянутой аннотацией. Он использует службу для получения ролей текущего пользователя и выдает проверенное исключение, чтобы сообщить о несанкционированном доступе;
- изменил все методы обслуживания, чтобы выдать исключение безопасности.