Spring Security Taglibの紹介
1. 概要
このチュートリアルでは、Spring Security Taglibsを見ていきます。これは、セキュリティ情報にアクセスし、JSPでセキュリティ制約を適用するための基本的なサポートを提供します。
2. Mavenの依存関係
まず、spring-security-taglibsの依存関係をpom.xmlに追加しましょう。
org.springframework.security
spring-security-taglibs
5.0.7.RELEASE
3. Taglibの宣言
ここで、タグを使用する前に、JSPファイルの先頭にtaglibをインポートする必要があります。
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
これを追加すると、Spring Securityのタグをsec prefixで指定できるようになります。
4. authorizeタグ
4.1. access式
私たちのアプリケーションでは、特定のロールまたはユーザーに対してのみ表示される情報が含まれている場合があります。
この場合、authorizeタグを使用できます。
Login
Logout
さらに、認証されたユーザーに特定の役割があるかどうかを確認できます。
Manage Users
また、accessの値として任意のSpring Security expressionを使用できます。
-
現在のユーザーがリストされているロールのいずれかを持っている場合、hasAnyRole(‘ADMIN','USER')はtrueを返します
-
現在のプリンシパルが匿名ユーザーの場合、isAnonymous()はtrueを返します
-
現在のプリンシパルがremember-meユーザーの場合、isRememberMe()はtrueを返します
-
isFullyAuthenticated()は、ユーザーが認証されており、匿名ユーザーでも記憶ユーザーでもない場合、trueを返します。
4.3. デバッグ
たとえば、テストシナリオなど、UIをさらに制御したい場合があります。 Spring Securityでこれらの無許可のセクションのレンダリングをスキップする代わりに、たとえばapplication.propertiesファイルでspring.security.disableUISecurity =trueを設定できます。
When we do this, the authorize tag won’t hide its contents.代わりに、コンテンツを<span class=”securityHiddenUI”>… </span>タグでラップします。 次に、CSSを使用してレンダリングをカスタマイズできます。
Remember though that hiding content via CSS isn’t secure! ユーザーはソースを表示するだけで、許可されていないコンテンツを確認できます。
5. authenticationタグ
また、「おかえりなさい、キャロル!」など、ログインしているユーザーの詳細を表示したい場合もあります。サイトに。
このために、authentication tagを使用します。
Welcome Back,
6. csrfInputタグ
うまくいけば、アプリでSpringSecurityのCSRF防御が有効になっています。
その場合、Spring Securityはすでに<form:form>タグ内にCSRF非表示フォーム入力を挿入しています。
ただし、代わりに<form>を使用する場合は、we can manually indicate where Spring Security should place this hidden input field using csrfInput:
CSRF保護が有効になっていない場合、このタグは何も出力しません。
7. csrfMetaTagsタグ
または、if we’re wanting to access the CSRF token in Javascript,トークンをメタタグとして挿入することをお勧めします。
これは、csrfMetaTags tagを使用して実行できます。
JavaScript with CSRF Protection
...
繰り返しますが、CSRF保護が有効になっていない場合、このタグは何も出力しません。
8. 結論
この簡単な記事では、いくつかの一般的なSpring Security taglibのユースケースに焦点を当てました。
そして、私たちが学んだように、これらは認証と認可を意識したJSPコンテンツのレンダリングに非常に役立ちます。
すべての例は、いつものように、over on Githubで見つけることができます。