Въведение в пролетните табели за сигурност

1. Общ преглед

В този урок ще разгледаме Spring Taglibs, който предоставя основна поддръжка за достъп до информация за защита и прилагане на ограничения за сигурност в JSP.

2. Зависимости на Maven

Първо, нека добавим зависимостта spring-security-taglibs към нашия pom.xml :

 org.springframework.security spring-security-taglibs 5.2.2.RELEASE 

3. Деклариране на таглибите

Сега, преди да можем да използваме маркерите, трябва да импортираме taglib в горната част на нашия JSP файл:

След добавяне на това ще можем да посочим таговете на Spring Security с префикса sec .

4. Разрешителният маркер

4.1. достъп до изрази

В нашите приложения може да имаме информация, която трябва да се показва само за определени роли или потребители.

Когато случаят е такъв, можем да използваме маркера за упълномощаване :

 Login   Logout 

Освен това можем да проверим дали удостоверен потребител има конкретни роли:

 Manage Users 

И можем да използваме всеки израз на Spring Security като наша стойност за достъп :

  • hasAnyRole ('ADMIN', 'USER') връща true, ако текущият потребител има някоя от изброените роли
  • isAnonymous () връща true, ако текущият принципал е анонимен потребител
  • isRememberMe () връща true, ако текущият принципал е потребител за запомняне
  • isFullyAuthenticated () връща true, ако потребителят е удостоверен и не е нито анонимен, нито потребител за запомняне

4.2. URL адрес

Освен това можем да проверим за потребители, които са упълномощени да изпращат заявки до определени URL адреси:

 Manage Users 

4.3. Отстраняване на грешки

Може да има случаи, в които искаме повече контрол над потребителския интерфейс, например в сценарии за тестване. Вместо да пропуснем Spring Security да изобразява тези неоторизирани секции, можем да зададем spring.security.disableUISecurity = true в, да речем, нашия файл application.properties .

Когато направим това, тагът за упълномощаване няма да скрие съдържанието му. Вместо това ще обгърне съдържанието с ... тагове. След това можем да персонализираме изобразяването сами с някакъв CSS.

Не забравяйте обаче, че скриването на съдържание чрез CSS не е сигурно! Потребителят може просто да прегледа източника, за да види неразрешено съдържание.

5. Маркерът за удостоверяване

Понякога ще искаме да покажем подробности за влезлия потребител, като например да кажем нещо като „Добре дошла, Карол!“ на сайта.

За това използваме маркера за удостоверяване :

 Welcome Back,  

6. Маркерът csrfInput

Надяваме се, че в приложението ни е активирана защитата на CSRF на Spring Security!

Ако го направим, тогава Spring Security вече вмъква скрит CSRF входен формуляр вътре тагове за нас.

Но в случай, че искаме да използваме вместо това можем ръчно да посочим къде Spring Security трябва да постави това скрито поле за въвеждане с помощта на csrfInput :

  Text Field:

Ако защитата на CSRF не е активирана, този таг не извежда нищо.

7. csrfMetaTags Tag

Или, ако искаме да получим достъп до маркера CSRF в Javascript, вероятно ще искаме да вмъкнем маркера като мета маркер.

Можем да направим това с маркера csrfMetaTags :

  JavaScript with CSRF Protection   var csrfParameter = $("meta[name='_csrf_parameter']").attr("content"); var csrfHeader = $("meta[name='_csrf_header']").attr("content"); var csrfToken = $("meta[name='_csrf']").attr("content");    ...  

Отново, ако защитата на CSRF не е активирана, този маркер няма да изведе нищо.

8. Заключение

В тази кратка статия се фокусирахме върху някои често срещани случаи на използване на таглиб Spring Security.

И както разбрахме, те са много полезни за изобразяване на JSP съдържание за удостоверяване и за упълномощаване.

Всички примери, както винаги, могат да бъдат намерени в Github.