Spring Security について学ぶ

とりあえず、Getting Startedをやるべき。
実際にやってみたのでメモを残す。

build gradle

以下の2行を追加する。

implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.security:spring-security-test'

WebSecurityConfig

WebSecurityConfigクラスを作成し、各メソッドをoverrideすることで、実際の設定を記述できる。

configureメソッド

configureメソッドはリクエストURLに対して、認証の要否を記述する。具体的なコードは以下。

        http
            .authorizeRequests().antMatchers("/", "/home").permitAll()
            .anyRequest().authenticated()
            .and()
            .formLogin()
            .loginPage("/login")
            .permitAll()
            .and()
            .logout()
            .permitAll();

上記のように書くことで、 * / および /homeは認証が不要。 * 上記以外のリクエストは認証を必要とする。 * ただし、loginリクエストは認証不要 といった具合に動く。

userDetailsServiceメソッド

        UserDetails user = User.withDefaultPasswordEncoder()
            .username("user")
            .password("password")
            .roles("USER")
            .build();
        return new InMemoryUserDetailsManager(user);
  • ユーザーネームにuser、パスワードにpasswordが来た場合に許可する。
  • ロールをUSERとする

以上。