보안에 활용되는 보안 프레임워크 . 유일무이한 선택지
EX) 어떠한 사용자라도 괜찮은지, 아닌지
LOGIN인이랑, 사실 사용자 인증의 역할을 한다. (네트워크 보안 교과목에서 수강하였다)
이에 추가적으로, 운영자와 사용자의 ROLE을 분할한다 (ROLE-BASED-ACCESS라고 볼 수 있다)
우리가 필요로하는 어떤 보안 절차라도 사용이 가능하다 .
스프링의 가장 유연하고 쉽게 구현된 기능은
인증과, 인가이다.
인증 (Authentication)
인증은 사용자가 누구운지 확인하는 절차이다. ex) 로그인
사용자의 인증을 주로 인증이라고 호칭한다.
*주의해야할 핵심 기능 -> 로그인을 한번 하고 나면, 해당 user가 user가 맞음을 계속 인증받아야 한다.
case 1 ) 모든 request시마다, id와 pw를 포함한다.
case 2 ) id,pw를 전송하고, nonce를 받아온다. 그 nonce를 앞으로는 매 연결시마다 전송한다.
*네트워크보안 강의 내용에 따라 , replyattack과 mitm attack을 어떻게 방지할 수 있는지가 궁금증이 생겼다.
허나 놀랍게도, spring secuirty에서 tls혹은 ssl를 적용가능함을 깨달았다! 해당 내용을 이후에 추가로 공부하기로 하였다.
인가 (Authorization)
한마디로, role 에 따라 할 수 있는 역할의 제한을 두는 것
SPRING SECURITY에서 통크게 지원해준, UserDetails 인터페이스.
이러한 method 들이 포함되어 있으며, 이를 오버라이딩하여 구체화하고 사용함을 목표로 한다.
SPRING에서 제공하는 두번째 CLASS는 PASSWORD ENCODER!
비밀번호 암호화 CLASS.
허나 이 PASSWORDENCODER를 사용할때는, 빈으로 직접 CONFIG를 통해서 설정해주어야한다.
번거롭게 Authentication을 사용하는 이유이자, 스프링의 존재 가치 .
User->authentication 객체로 변환하여, 해당 객체가 인증받은 객체인지 아닌지를 get Principal로 확인해 줄 수 있다.
즉 User->authentication | 인증 받았는가? | -> 인증 받았다면 해당 User를 다시 구현하는 형태이다 .
@Modelattribute는 앞선 thymeleaf에 model 형태로 전달하기 위해서,
@Requestparam은 @PATHVARIABLE과 다르게,
/{}형태로 전달되지 않아도 사용된다
@GetMapping("/example") public String exampleMethod(@RequestParam String paramName)
/example?paramName=어쩌구 이와 같이 대입되는것이 requestparam
@GetMapping("/example/{id}") public String exampleMethod(@PathVariable Long id)
이것이 pathvariable
***긴급 ****
기존 사용했던 WebSecurityAdapter와 http에 관련된 모든 것들이 deprecated 되었다.
기존 이를 활용하여 configuration으로 설정했던 부분들은, application properties혹은 이를 상속하지 않는 형태의 configuration으로 수정이 필요하다.
++ @Bean으로 void를 return 할 수 없다. 초기화를 위할땐 @PostConstruct를 사용하자
설정이 정말 잘 나와있는 블로그. 감사합니다.
'백엔드 > Spring Security' 카테고리의 다른 글
Spring Security Config (0) | 2024.01.11 |
---|---|
Spring Security의 핵심 , SECURITY Filter (1) | 2024.01.11 |
Spring Security 구조와 내부 (0) | 2024.01.11 |