1概要

  • このクイックチュートリアルでは、Thymeleafを使用したSpring Securityに焦点を当てます** セキュリティ方言の使用方法を説明するSpring Bootアプリケーションを作成します。

フロントエンドテクノロジとしては、http://www.thymeleaf.org/index.html[Thymeleaf] – Spring MVCフレームワークとの良好な統合を備えた最新のサーバーサイドWebテンプレートエンジンです。

詳細については、私たちのリンクを見てください:/thymeleaf-in-spring-mvc[紹介記事]。

最後に、Spring Securityの方言はThymeleafの追​​加モジュールであり、当然のことながらこれらの両方を統合するのに役立ちます。

リンクで作成した単純なプロジェクトを使用します。/spring-boot-start[Spring Bootチュートリアル]の記事。/thymeleaf-in-spring-mvc[春のThymeleafチュートリアル]には、標準のThymeleaf設定があります。


2依存関係

まず最初に、Mavenの__pom.xmlに新しい依存関係を追加しましょう。

<dependency>
    <groupId>org.thymeleaf.extras</groupId>
    <artifactId>thymeleaf-extras-springsecurity4</artifactId>
</dependency>


Maven Central

で入手可能です。


3 Springのセキュリティ設定

次に、Spring Securityの設定を定義しましょう。

セキュリティ方言の使い方を説明するには、少なくとも2人の異なるユーザーが必要です。

@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

   //[...]
    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth)
      throws Exception {
        auth
          .inMemoryAuthentication()
          .withUser("user").password(passwordEncoder().encode("password")).roles("USER")
          .and()
          .withUser("admin").password(passwordEncoder().encode("admin")).roles("ADMIN");
    }

    @Bean
    public BCryptPasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}

ご覧のとおり、

configureGlobal(AuthenticationManagerBuilder auth)

では、ユーザー名とパスワードを使用して2人のユーザーを定義します。これらを使用してアプリケーションにアクセスできます。

私たちのユーザーはそれぞれ異なる役割を持っています。それぞれ

ADMIN



USER

であるため、役割に基づいて特定のコンテンツを表示できます。


4セキュリティ方言

  • Spring Securityの方言を使用すると、ユーザの役割、権限、またはその他のセキュリティ表現に基づいて条件付きでコンテンツを表示することができます。

セキュリティ方言の例を含むインデックスページを見てみましょう。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
    <head>
        <title>Welcome to Spring Security Thymeleaf tutorial</title>
    </head>
    <body>
        <h2>Welcome</h2>
        <p>Spring Security Thymeleaf tutorial</p>
        <div sec:authorize="hasRole('USER')">Text visible to user.</div>
        <div sec:authorize="hasRole('ADMIN')">Text visible to admin.</div>
        <div sec:authorize="isAuthenticated()">
            Text visible only to authenticated users.
        </div>
        Authenticated username:
        <div sec:authentication="name"></div>
        Authenticated user roles:
        <div sec:authentication="principal.authorities"></div>
    </body>
</html>

Spring Securityの方言に固有の属性を見ることができます。


sec:authorize

および

sec:authentication

これらについて、順番に説明しましょう。

4.1.

secについて:authorize

簡単に言うと、表示されるコンテンツを制御するために

sec:authorize

属性を使います。

たとえば、ロールUSERを持つユーザーにのみコンテンツを表示したい場合 –

<div sec:authorize =” hasRole( ‘USER’)”> .

そして、認証されたすべてのユーザーへのアクセスを拡大したい場合は、次の式を使用できます。


<div sec:authorize =” isAuthenticated()”> .

4.2.

secについて:認証

Spring Security


Authentication


インターフェースに関する有用なメソッドが公開されています。認証済みプリンシパルまたは認証要求。

Thymeleaf ** を使用して認証オブジェクトにアクセスするには、

<div sec:authentication =” name”>

または

<div sec:authentication =” principal.authorities”> .

を使用するだけです。

前者は認証されたユーザーの名前へのアクセスを許可し、後者は認証されたユーザーの役割へのアクセスを許可します。


5概要

この記事では、ThymeleafのSpring Securityサポートを単純なSpring Bootアプリケーションで使用しました。

いつものように、この記事に示されているコードの実用的なバージョンは私たちのhttps://github.com/eugenp/tutorials/tree/master/spring-security-thymeleaf[GitHub repository]で利用可能です。