스프링 시큐리티 사용법을 살펴보자
일단 설정관련 어노테이션을 주고(@Configuration)
인터페이스 스프링 시큐리티 어노테이션을 쓰고 (@EnableWebSecurity)
인터페이스 시큐어가 전역의 메소드에 활성화되는 어노테이션을 준다. (@EnableGlobalMethodSecurity)
그리고 나서 하기와 같이 BCrypt 암호화 객체를 메소드로 등록도 하고
본격적으로 HttpSecurity의 설정을 해준다.
csrf 설정을 disable 해준다.
https://velog.io/@woohobi/Spring-security-csrf%EB%9E%80
위의 URL을 참고해서 요약하면
Csrf란 Cross site Request forgery로 사이즈 간 위조 요청인데,
즉 정상적인 사용자가 의도치 않은 위조 요청을 보내는 것을 의미한다.
이런 보안 수준을 향상시키는 설정을 diable 한것은
spring security documentation 에 논브라우저 클라이언트만을 위한 서비스라면 csrf를 disbale해도 좋다고 한다.( rest api를 이용한 서버라면, session 기반 인증과는 다르게
stateless하기 때문에 서버에 인증정보를 보관하지 않는다. rest api에서 client는 권한이 필요한 요청을 하기 위해서는 요청에 필요한 인증 정보를(OAuth2, jwt토큰 등)을 포함시켜야 한다. 따라서 서버에 인증정보를 저장하지 않기 때문에 굳이 불필요한 csrf 코드들을 작성할 필요가 없다. )
참고 : Stateful / Stateless - 해당시점의 상황과 품질 존재 상태로 상호작용상태가 얼마나 오래 기록되는지 나타냄
Stateless는 격리된것으로 간주(단일요청의 트랜잭션)
Stateful 은 온라인 뱅킹이나 이메일처럼 여러번 반환될수 있고 이전 트랜잭션의 컨텍스트에 따라 수행된다. 현재 트랜잭션이 이전 트랜잭션에서 발생한 상황에 영향을 받는다.(같은 서버 사용)
더 상세한것은 하기 URL 참고
https://www.redhat.com/ko/topics/cloud-native-apps/stateful-vs-stateless
authorizeRequests()를 통해서 통신 권한을 인가 설정할수 있다.
여기서는 간단하게 login/logout 설정과
(정적 폴더 허용하고 , 예외처리와 접근 거부된 페이지까지 처리가능하다.)
'4차산업혁명의 일꾼 > Java&Spring웹개발과 서버 컴퓨터' 카테고리의 다른 글
스프링 JWT (0) | 2022.07.19 |
---|---|
카카오 로그인 OAuth 기능 구현 (0) | 2022.07.19 |
의존성 주입[DI]과 역전제어[IOC] (0) | 2022.07.18 |
리팩토링(refactoring) (0) | 2022.07.18 |
Rest API 와 @ResponseBody (0) | 2022.07.18 |