Java Security Framework
Я новичок в платформе Java. Мне нужно работать с некоторыми средами безопасности Java как для настольных приложений, так и для веб-приложений. Теперь мне нужно знать, какие фреймворки мне следует изучить для настольных приложений (предположим, для Java SE или Java EE) и для веб-приложений (предположим, для JSP)?
2 ответа
Я предполагаю, что вы создаете всеобъемлющую архитектуру безопасности, управляете удаленными соединениями и другими аспектами всей системы. Безопасность настольных приложений и веб-безопасность будут разными, но многие из них будут решаться по-своему.
Только некоторые из тем, которые будут включены, будут: Аутентификация, Авторизация и Аудит (AAA), безопасность данных при передаче и в состоянии покоя, отказ от авторства, безопасность транспортного уровня, безопасность платформы (например, управление привилегиями платформы).
Двумя наиболее распространенными средами безопасности Java являются Spring Security и Apache Shiro. Обе они затрагивают ряд вышеупомянутых тем, но они являются фреймворками - это означает, что вам нужно определить архитектуру и политики безопасности, а затем настроить / расширить фреймворки в вашем конкретном домене.
Bouncy Castle предоставляет набор готовых криптографических средств, в том числе совместимый с Java Cryptography Extension (JCE) - он также соответствует FIPS 140-2, но не сертифицирован. Существует целая другая игра / индустрия для тех, кто продает сертифицированные решения.
Вот пример - допустим, что ваше настольное приложение будет использовать смарт-карту с сертификатом X.509 для получения доступа и взаимодействия с веб-приложением. В этом случае у вас есть куча мер безопасности, связанных со смарт-картой - PIN-коды, шифрование и т. Д. Затем вы можете использовать сертификат клиента на стороне сервера и поставщика аутентификации X.509 на стороне сервера. Вы можете даже тогда иметь некоторые процедуры авторизации на основе Отличительного Имени, указанного в сертификате. Вы найдете доступ к хранилищу доверенных сертификатов, провайдеры аутентификации, контроль доступа на основе ролей и т. П. В вышеупомянутых структурах безопасности - но вы должны собрать все воедино.
Вы также можете посмотреть @ OWASP для рекомендаций по веб-безопасности: https://www.owasp.org/index.php/Main_Page
Если вы несете ответственность за предоставление решения в области безопасности и начинаете с рассмотрения фреймворков, я должен предупредить вас, что существует разрыв в обмене знаниями между экспертами / аналитиками в области безопасности и разработчиками программного обеспечения - то есть людьми, которые говорят вам О том, как эксплуатировать слабые места, обычно не говорят те, кто говорит вам, как настроить Spring Security или использовать JCE API.
Приличная стратегия смягчения состоит в том, чтобы взглянуть на некоторые решения "оболочки безопасности", которые по сути создают небольшие анклавы с закаленными / защищенными точками входа в анклав. Примером такого продукта может быть Уровень 7, который обычно используется в качестве шлюза безопасности веб-служб.
Хорошей охоты!
Есть несколько доступных структур:
- Spring Security
- JAAS
- JBoss Seam Security ( http://docs.jboss.org/seam/2.2.2.Final/reference/en-US/html_single/)
Если вы создаете веб-приложение вместе с Spring, я бы порекомендовал взглянуть на пакет Spring Security, поскольку он прекрасно интегрируется в другую среду Spring. Также у JBoss Seam есть несколько интересных подходов.
Также некоторые связанные ссылки на stackru:
И конечно: