[내배캠/TIL(6/24)]스프링 시큐리티 설정

손홍서·2022년 6월 24일
1

Spring

목록 보기
14/24

day44 TIL

Spring Security

스프링 시큐리티(Spring Security)란 자바 서버 개발을 위해 필요로 한 인증, 권한 부여 및 기타 보안 기능을 제공하는 프레임워크(클래스와 인터페이스 모임)

BCryptPasswordEncoder

스프링 시큐리티(Spring Seurity) 프레임워크에서 제공하는 클래스 중 하나로 비밀번호를 암호화하는 데 사용할 수 있는 메서드를 가진 클래스

  • BCryptPasswordEncoder는 BCrypt 해싱 함수(BCrypt hashing function)를 사용해서 비밀번호를 인코딩해주는 메서드와 사용자의 의해 제출된 비밀번호와 저장소에 저장되어 있는 비밀번호의 일치 여부를 확인해주는 메서드를 제공

  • PasswordEncoder 인터페이스를 구현한 클래스

  • 생성자의 인자 값(verstion, strength, SecureRandom instance)을 통해서 해시의 강도를 조절 가능

CSRF

Cross site Request forgery로 사이즈간 위조 요청인데, 즉 정상적인 사용자가 의도치 않은 위조요청을 보내는 것을 의미

csrf protection을 적용하였을 때, html에서 csrf 토큰이 포함되어야 요청을 받아들이게 됨으로써, 위조 요청을 방법

csrf를 disable하는 이유

rest api를 이용한 서버라면, session 기반 인증과는 다르게 stateless하기 때문에 서버에 인증정보를 보관하지 않는다. rest api에서 client는 권한이 필요한 요청을 하기 위해서는 요청에 이미 필요한 인증 정보를(OAuth2, jwt토큰 등)을 포함시켜야 한다. 따라서 서버에 인증정보를 저장하지 않기 때문에 굳이 불필요한 csrf 코드들을 작성할 필요가 없다.

이외 다양한 스프링 시큐리티 설정 요약

@EnableWebSecurity - 스프링 시큐리티 설정 활성화

authorizeRequests() - URL별 권한 접근제어 관리 옵션 시작점
antMatchers - 권한 관리 대상 지정
permitAll() - 모든 권한에게 공개
hasRole(user권한) - user권한인 사람한테만 공개
anyRequest().authenticated() - 나머지 요청들은 인증된 사람에게만 공개(인증된 사람 == 로그인 사용자)
.oauth2Login() - oauth2 로그인 설정의 진입점
userInfoEndpoint() - 로그인 성공 이후 사용자 정보 가져올때의 설정 담당

스프링 시큐리티 설정 요약


BCryptPasswordEncoder
https://kimvampa.tistory.com/129
CSRF
https://velog.io/@woohobi/Spring-security-csrf%EB%9E%80
https://cceeun.tistory.com/169

profile
Hello World!!

0개의 댓글