Главная » Spring » Безопасность в Spring

0

Доводилось ли вам замечать, что большинство персонажей в телеви- зионных комедийных сериалах никогда не запирают свои двери на за- мок? Причем постоянно. Например, в сериале «Seinfeld» («Сайнфелд») Крамер (Kramer) часто позволяет себе заходить в квартиру к Джер- ри (Jerry) и одалживать у него вещи и продукты. В сериале «Friends» («Друзья») разные персонажи часто входят друг к другу в комнату без предупреждения, совершенно не задумываясь. Однажды, находясь в Лондоне, Росс (Ross) ворвался в комнату в отеле, где поселился Ченд- лер (Chandler), и застал его в пикантной ситуации со своей сестрой.

В сериале «Leave it to Beaver» («Проделки Бивера») персонажи тоже нечасто запирали свои двери. Довольно странно видеть, как герои сериалов позволяют бесцеремонно вторгаться в свои дома и квартиры, в то время когда все вокруг заботятся о неприкосновен- ности частной жизни.

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

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

Выше я не случайно использовал слово «аспект» применительно к безопасности приложений. Обеспечение безопасности – это задача,

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

Если из моих слов вам показалось, что безопасность можно обес- печить с использованием приемов аспектно-ориентированного про- граммирования, то вы совершенно правы. В этой главе мы иссле- дуем способы обеспечения безопасности приложений с помощью аспектов. Но мы не будем заниматься разработкой этих аспектов, вместо этого мы задействуем Spring Security – фреймворк обеспе- чения безопасности, реализованный с применением механизмов Spring AOP и сервлет-фильтров1.

Введение в Spring Security

Spring Security – это фреймворк обеспечения безопасности, пре- доставляющий возможность декларативного управления безопасно- стью приложений на основе фреймворка Spring. Фреймворк Spring Security представляет собой всеобъемлющее решение по обеспече- нию безопасности, реализующее возможность аутентификации и авторизации как на уровне веб-запросов, так и на уровне вызовов методов. Опираясь на возможности фреймворка Spring Framework, Spring Security в полной мере использует поддержку внедрения за- висимостей  (DI) и аспектно-ориентированного  программирования.

Проект Spring Security начинал разрабатываться под названием Acegi Security. Acegi – это мощный фреймворк обеспечения безопас- ности, но он имел один существенный недостаток – большой объем конфигурационного файла в формате XML. Не буду загружать вас демонстрацией примера такого конфигурационного файла, скажу лишь, что типичная конфигурация Acegi занимала несколько сотен строк разметки XML.

В версии 2.0 фреймворк Acegi Security был переименован в Spring Security. Но версия 2.0 отличается не только названием. В Spring

1 Возможно, я получу массу электронных писем с возражениями, но я все- таки скажу, что сервлет-фильтры являются примитивной формой AOP, где шаблоны URL выступают в роли языка выражений для определения множеств точек внедрения. Уф-ф… Я сказал это… Теперь мне стало легче.

Security 2.0 появилось новое пространство имен XML, связанное с безопасностью и предназначенное для настройки системы безопас- ности в Spring. Новое пространство имен, наряду с аннотациями и обоснованными настройками по умолчанию, позволило сократить объем конфигурации безопасности с сотен до десятков и даже еди- ниц строк. В самой свежей версии, Spring Security 3.0, была добав- лена поддержка языка выражений SpEL, что еще больше упростило настройку безопасности.

Фреймворк Spring Security обеспечивает безопасность с двух сторон. Для ограничения доступа и обеспечения безопасности на уровне запросов в Spring Security используются сервлет-фильтры. А для обеспечения безопасности на уровне вызовов методов с ис- пользованием Spring AOP фреймворк Spring Security предоставля- ет объекты-обертки и позволяет применять советы, гарантирующие авторизацию пользователей.

Источник:   Уоллс К., Spring в действии. – М.: ДМК Пресс, 2013. – 752 с.: ил.

По теме:

  • Комментарии