この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:1
更新日時:2019-11-13 15:41:00
タイトル: Basic認証の実装と特定のURLに限定する方法
SEOタイトル: 【Spring】Basic認証の実装と特定のURLに限定する方法
pom.xmlに追記
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
|
設定クラスを追加
import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
@EnableWebSecurity
public class WebSecurityBasicConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.antMatcher("/test"); //Basic認証を必要とするURLを記述する この記述がない場合は全リクエストでBasic認証が必要となる
http.httpBasic();
http.authorizeRequests() //
.anyRequest().authenticated();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
|
ユーザー名とパスワードの認証クラスを追加
import java.util.Collections;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
@Service
public class LoginUserService implements UserDetailsService {
// 実体は@Beanの付いたpasswordEncoderメソッドから取得される
@Autowired
private PasswordEncoder passwordEncoder;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
if (username == null) {
throw new UsernameNotFoundException("empty");
}
String password;
switch (username) {
case "test_user":
password = passwordEncoder.encode("test_password");
break;
default:
throw new UsernameNotFoundException("not found");
}
return new User(username, password, Collections.emptySet());
}
}
|