
블로그 작성법
목표 > 공부한 내용 > 얻었고, 앞으로 이걸 해봐야지 적기
user / password
[Security]
1. dependency 추가
: 기본값 id = user, password = log로 비밀번호 전달 해줌
PasswordEncoder: 직접 암호화를 지정하고 싶을 경우
UserDetails: 여러분들의 유저 역할 클래스를 추상화
Member, User, ...
UserDetails라는 객체를 생성해서 사용
UserDetails user = User.withDefaultPasswordEncoder()
.username("user")
.password("password")
.roles("user")
.build();
System.out.println(user.getPassword());
// {bcrypt}$2a$10$dXJ3SW6G7P50lGmMkkmwe.20cQQubK3.HZWzG3YB1tlRy.fqvM/BG
위 코드 사용시 security User를 사용해야한다.

아래와 같이 코드를 옮겨 갔다.

실행하면
앞에다가 암호화한 것을 정해준다.
[Spring Security]
dependency를 넣으면,,
1. id가 생김
기본값 id = user, password = log로 비밀번호 전달 해줌
UserDetails : 여러분들의 유저 역할 클래스를 추상화
Member, User, ...
1) 계정 아이디(username), 비밀번호(password), 역할(role)
2) 만료 계정 아님? ...
이거를 우리 클래스에 implements
UserDetailsService : 추상화
Q. 이 추상화 클래스의 역할?
loadUserByUsername() 메소드의 역할? + 언제 호출?
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws Exception{
httpSecurity.authorizeHttpRequests() // 요청에 대한 권한을 지정
.antMatchers("/join")
.permitAll()
.anyRequest()
.authenticated(); // 인증은 되어야해!
return httpSecurity.build();
}
위 코드에서 405 에러가 발생하는 이유
API가 프론트엔드랑 소통을 할 때
csrf(cross site request forgery)
프론트엔드에서 사용자가 클릭을 하면서 발생
사용자 클릭 : URL, 버튼
한동안 피싱 사례 중에 거의 80%를 차지하였다.
이 방식을 통해 ddos 공격을 한다.
Spring Security에 csrf가 적용되어있다.
그래서, csrf를 안쓸것이다 라고 명시해줘야 한다.
인증, 인가 등 모두 Filter에서 사용하는 개념이다.
알쓸송잡
프로젝트에 적용하면 좋은 것
OAuth2
ex> kakao login
오늘 배운 Spring Security를 통해 Spring Boot에서 인증, 인가에 관한 기능을 제공해주는 것을 배웠다. 개념이 조금은 어려운 감이 있었지만 다시 스스로 코드를 짜보고 개념을 정리해보는 시간을 가져야겠다.