Shiro проверка разрешений анализа

Shiro изложены

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

три основных компонента Сиро

1, Тема: операция текущего пользователя

Орган для проверки информации: 2, SecurityManager: для управления всей Темы 3, Царствах

Фигура следующим образом: отношения вызовов между компонентами:

 

Тема: переводчик для главного героя, главного героя в настоящее время участвует в секции безопасности приложения. Может быть пользователем, вы можете попробовать сторонний сервис может быть хроны работы, или что-нибудь. В основном относится к вещи взаимодействует с текущим программным обеспечением. Все Subject требуют SecurityManager, когда вы взаимодействуете с Субъектом, эти взаимодействия превращаются фактически взаимодействовать с SecurityManager

SecurityManager: администратор безопасности, архитектура ядра Shiro, это как зонтик внутри Shiro все оригинальное. Однако, как только конфигурации SecurityManager, SecurityManager используется на относительно небольшого, разработчики провели большую часть верхнего Subject Пожалуйста, помните, когда вы были с Субъектом

взаимодействие времени, на самом деле, поможет вам поднять SecurityManager Subject сделать некоторые операции по обеспечению безопасности в фоновом режиме.

Realms: Realms, как Shiro и приложения мостовых соединений, когда вы должны взаимодействовать с защищенным данными, как учетными записями пользователей, а также контроль доступа, Shiro будет найти из одного или нескольких из Сфер. Shiro предлагает некоторую Realms можно использовать непосредственно, если Realms по умолчанию не может удовлетворить ваши потребности, вы можете также настроить свои собственные Realms.

Десятка Сиро особенности:

черты

Широ, содержащий 10 содержимое, как показано ниже:

  1. Аутентификация: Аутентификация / Логин, убедитесь, что пользователь не имеет соответствующий статус.
  2. Авторизация: Авторизация, что компетенция проверить, убедиться, что проверка подлинности пользователя привилегии, то есть, может ли пользователь делать такие вещи, как общие: убедитесь, что пользователь имеет определенную роль. Или мелкозернистый проверить, имеет ли пользователь разрешение на ресурс.
  3. Session Manager: Управление сеансом, то есть после входа пользователя в одном сеансе, в отсутствие выхода, это вся информация, в ходе сессии, сессия может быть обычная JavaSE среда, это может быть как веб-среде.
  4. Шифрование: шифрование для защиты безопасности данных, таких как зашифрованные пароли, сохраненные в базе данных, не хранится в виде обычного текста.
  5. Веб-поддержка: Веб-поддержка может быть очень легко интегрируется в веб-среде.
  6. Кэширование: Cache, например, регистрировать пользователей, в, их информацию о пользователях, с ролями / разрешения не должны проверять каждый раз, так что вы можете повысить эффективность работы.
  7. Параллелизм: поддержка сиро одновременно проверка многопоточных приложения, такие как открытие, которое другой поток в потоке, может распространяться автоматически разрешения прошлого.
  8. Тестирование: обеспечить поддержку тестирования.
  9. Run As: позволяет пользователю притворяется доступ к другому пользователю (если они разрешены) идентичность.
  10. Запомнить: Запомнить меня это очень общая черта, то есть после первого входа в систему, то не вернусь в следующий раз регистрируется.

Принцип действия Shiro

Тема: предмет, вы можете увидеть, что тело может быть любое взаимодействие с приложением «пользователя.»

SecurityManager: соответствует SpringMVC DispatcherServlet или Struts2 в FilterDispatcher. Это ядро ​​Сиро, все специфические взаимодействия через

контроль SecurityManager. Он управляет всем предметным, и отвечает за аутентификацию и авторизацию, сессии и управление кэшем.

Authenticator: аутентификация, орган, ответственный за сертификацию, которая является точкой расширения, если вы плохо себя чувствовать Shiro по умолчанию, мы можем обычай реализации. Она требует политики аутентификации (Authentication Strategy), то есть, при каких обстоятельствах рассматриваться аутентификации пользователя.

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

Realm: может быть один или более из области, объект можно считать безопасным источником данных, то есть для получения субъекта безопасности. Это может быть достигнуто JDBC, LDAP может быть достигнуто, или реализация памяти.

SessionManager: Если вы написали сервлет должен знать концепцию сеанса, Session нужен кто-то, чтобы управлять его жизненным циклом, этот компонент SessionManager. И Shiro можно использовать не только в веб-среде, также можно использовать в качестве обычной среды JavaSE.

SessionDAO: DAO мы использовали, объекты доступа к данным для CRUD сессии. Мы можем обычай реализации SessionDAO, положение магазина управления сеансом. JDBC записываются в базу данных или написав по Jedis в Redis. Кроме того SessionDAO можно использовать кэш Cache для улучшения производительности.

CacheManager: Cache Manager. Он управляется как кэш пользователей, ролей, полномочий и тому подобное. Поскольку эти данные могут быть изменены только в редких случаях, после доступа к кэш-памяти позволяет повысить производительность.

Криптография: криптография модуль, Shiro улучшить некоторые общие компоненты, такие как шифрование пароля для шифрования / дешифрования.

Основная запись Сиро

Сегодня мы демонстрируем начальные Сиро, нет никакой интеграции любых рамок, а просто продемонстрировать принцип работы Сиро, нет необходимости создавать классические пять таблиц

Идея создания проекта с использованием Maven

Добавьте следующую зависимость в pom.xml:

<! - зависит от конфигурации сиро ->

<Зависимостей>

<Зависимость>

<Идентификатор_группы> org.apache.shiro </ идентификатор_группы>

<Артефакт> сиро-ядро </ артефакт>

<Версия> 1.2.3 </ версия>

</ Зависимость>

<Зависимость>

<Идентификатор_группы> org.slf4j </ идентификатор_группы>

<Артефакт> SLF4J-простой </ артефакт>

<Версия> 1.6.1 </ версия>

</ Зависимость>

</ Зависимости>

Произвольно создать пакет, создать тестовый класс демы в нем:

пакет me.aihe; импорт org.slf4j.Logger; импорт org.slf4j.LoggerFactory;

общественный класс Demo {

частный статический окончательный переходный Logger журнал = LoggerFactory.getLogger (Tutorial.class); государственной статической силы основных (String [] арг) {

http://log.info ( "My First Apache Shiro Application"); System.exit (0);

}

} Чтобы создать файл конфигурации shiro.ini

Shiro обеспечивает общую схему, сконфигурированный через INI, конечно же, можно настроить с помощью XML, YMAL, JSON как. В следующем каталоге ресурсов, создайте файл shiro.ini. Она гласит следующее:

# ------------------------------------------------- ------------------------

# пользователей и их (по желанию), назначенные роли

# Имя пользователя = пароль, role1, роль2, ..., Rolen

# ------------------------------------------------- ------------------------

[пользователи]

корень = секрет, админ гость = гость, гость

presidentskroob = 12345, президент

темный жемчуг = ludicrousspeed, Darklord, при условии Schwartz = субъект, goodguy, клиент

# ------------------------------------------------- ------------------------

# Роли с назначенными правами

# RoleName = perm1, perm2, ..., permN

# ------------------------------------------------- ------------------------

[Роли] админ = *

клиент = внешний вид: *

goodguy = Виннебаго: привод: eagle5

Тест конфигурации Shiro.ini ссылка

Теперь изменим файл класса Demo, как показано ниже

импорт org.apache.shiro.authc *.

импорт org.apache.shiro.config.IniSecurityManagerFactory;

импорт org.apache.shiro.mgt.SecurityManager;

импорт org.apache.shiro.session.Session;

импорт org.apache.shiro.subject.Subject;

импорт org.apache.shiro.util.Factory;

импорт org.slf4j.Logger;

импорт org.slf4j.LoggerFactory;

общественный класс Demo {

частный статический окончательный переходный Logger журнал = LoggerFactory.getLogger (Tutorial.class);

общественности статической силы основных (String [] арг) {  http://log.info ( "My First Apache Shiro Application");

// 1. SecurityManager здесь org.apache.shiro.mgt.SecurityManager, а не

Файл конфигурации нагрузки //java.lang.SecurityManager

Завод <SecurityManager> завод = новый IniSecurityManagerFactory ( ": shiro.ini путь к классам");

// 2. Синтаксический файл конфигурации, и возвращает некоторые экземпляры SecurityManger

SecurityManager SecurityManager = factory.getInstance ();

// 3. SecurityManager набор в области статической памяти, синглтона

SecurityUtils.setSecurityManager (SecurityManager);

// безопасная эксплуатация

Тема CurrentUser = SecurityUtils.getSubject ();

// установить свойство в текущем сеансе приложения

Сессия Сессия = currentUser.getSession (); session.setAttribute ( "ключ", "значение");

// наши текущие пользователи анонимных пользователей, мы стараемся войти в систему,

если (! currentUser.isAuthenticated ()) {

UsernamePasswordToken маркер = новый UsernamePasswordToken ( "Aihe", "Aihe");

token.setRememberMe (истина);

// пользователь пытается войти в систему, если Логин не удается, мы делаем какую-то работу

попробуйте {currentUser.login (маркер);

// Когда мы выиграли вошедшего в систему пользователя

http://log.info ( "Пользователь [" + currentUser.getPrincipal () + "] вошли в систему успешно.");

// Проверить, если пользователь указал роль

если (currentUser.hasRole ( "клиент")) {

http://log.info ( «Смотри в своей роли»); } Еще {  http://log.info ( "");

}

// Проверка, что пользователь имеет разрешение

если (currentUser.isPermitted ( "вид: стол")) {

http://log.info ( «Вы можете посмотреть использовать его с умом..»);

} Еще {

http://log.info ( " К сожалению, вы не можете смотреть.");

}

если (currentUser.isPermitted ( "WINNEBAGO: привод: eagle5")) {

http://log.info ( «Вам разрешены„диск“и„“WINNEBAGO с номерным знаком (ID)„eagle5“.» + «Вот

ключи - получайте удовольствие "!);

} Еще {

http://log.info ( « К сожалению, вы не можете управлять„eagle5“WINNEBAGO!»);

}

// выход из системы currentUser.logout ();

} Задвижка (UnknownAccountException оаэ) {

// расчетный счет не существует

} Задвижка (IncorrectCredentialsException лед) {

// неверный пароль

} Задвижка (LockedAccountException Лаэ) {

// пользователь заблокирован

} Задвижка (AuthenticationException ае) {

// не может судить о ситуации

}

}

System.exit (0); }

}

Сиро демо, то, что мы узнали

Это относительно простая процедура, но она также доказывает основное использование некоторых Сиро, мы можем выполнить аутентификацию, контроль доступа и другую Сиро.

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

Опубликовано 682 оригинальные статьи · вона похвала 1391 · Просмотров 1,71 млн +

рекомендация

отblog.csdn.net/itcast_cn/article/details/104795787