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, я бы порекомендовал взглянуть на пакет Spring Security, поскольку он прекрасно интегрируется в другую среду Spring. Также у JBoss Seam есть несколько интересных подходов.

Также некоторые связанные ссылки на stackru:

И конечно:

Другие вопросы по тегам