2012-03-20 1 views
1

Я хочу защитить новую систему клиентских серверов, основанную на весне, с защитой от пружин и (предпочтительно) на основе метода.Как защитить сервер сокетов весной?

Есть много весенних примеров для веб-приложений, но до сих пор я не нашел их для не-веб-приложений Java.

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

что-то вроде этого возможно?

EDIT

я нашел пример, который использует пружинную безопасность в junit integration tests я думаю, я мог бы сделать это так, но я не смог бы использовать IoC для моих фасадов так что я не то, что увлекаюсь идеей.

ответ

1

Spring Security поддерживает проверку подлинности на уровне метода с помощью аннотаций. Вы можете попробовать аннотацию @PreAuthorize, как описано в «Access Control using @PreAuthorize and @PostAuthorize», - хотя я не уверен, как получить надлежащий контекст безопасности до того, как вызывается метод.

+0

контекст безопасности - это именно тот момент, когда я беспокоюсь. лучший пример, который содержит что я хочу (по крайней мере частично), это http://affy.blogspot.de/2005/10/acegi-tutorial-example-of-method-based.html, но я надеялся на что-то более простое и прозрачное. – Laures

+1

В приведенном ниже примере они вручную настраивают контекст, используя метод 'createSecureContext', который они написали в тестовом классе. Как вы обрабатываете аутентификацию в своем приложении? Возможно, вы можете подключить свой логин/рукопожатие, чтобы настроить контекст безопасности, подобный этому примеру. –

+0

Вы правы.в соответствии с документацией SecurityContextHolder.getContext() удерживает (по умолчанию) контекст для текущего потока. поскольку netty порождает поток для каждого соединения, это должно работать. я провешу это решение – Laures

0

Хотя я уверен, что вы могли бы взломать что-нибудь вместе, чтобы заставить его работать, в общем Spring Security является сильно сосредоточены на обеспечении Web серверов. В частности, этот фокус проявляется в архитектуре цепочки фильтров системы, которая связана с наличием делегата фильтра в web.xml.

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

Так, в общем, я думаю, что это возможно, но это определенно не будет легким, и, вероятно, не получит вам много пользы, так как большая часть архитектуры и по умолчанию частей безопасности ожидает быть обернуты вокруг веб-запрос.

+0

Вы можете порекомендовать альтернативу? Я действительно не хочу обрабатывать безопасность вручную. хочу использовать весну как IoC-Framework, весенняя безопасность выглядела как хорошая идея. – Laures

+0

Я не знаю ничего лучше, чем Spring Security, так что лучше всего всего _may_ просто взломать подсистему аутентификации, пока не сможете подключите его к тому, что вам нужно, а затем используйте систему авторизации как написанную (которая должна работать нормально, пока пользователь аутентифицирован) – cdeszaq

0

Ответ не связан с весной безопасности, но если это всего лишь «секретный», о котором вы беспокоитесь, посмотрите на apache shiro. Я видел некоторую документацию, в которой говорится, что она может быть защищена на уровне сокетов, но Howerver не может найти ее сейчас ... :(