4차산업혁명의 일꾼/Java&Spring웹개발과 서버 컴퓨터

스프링시큐리티6(OAuth2)의 속도, 자원절감, 보안향상, 권한조정의 이점

르무엘 2024. 7. 21. 02:32

스프링 시큐리티는 버전 1~6까지 있는데, 2에서부터 SpringSecurity라는 이름으로 설정되었다. 버전 2가 되면서 공실상부 스프링의 시큐리티 담당으로 인정받은 것이다. 당연히 이 당시에는 xml 기반으로 이루어졌다. 3부터 Java Config, OAuth2의 지원이 추가되었다. OAuth는 요청마다 서명 생성하는데(요청토근,액세스토큰), OAuth2 는 더 단순한 토큰 기반인증으로 액세스 토큰을 사용하여 액세스에 접근한다. SSL/TLS사용이 필수라서 전송 중 데이터의 기밀성과 무결성을 보장한다. 확장성도 있어서 안쓸 이유가 없다.

그리고 인증에 있어서 빅테크를 활용의 지평을 넓히면서 SpringSecurity의 위상이 높아졌다.  4부터 드디어 스프링부트와 통합되었다. 쓰기 편해졌다. 5에서는 리액티브 애플리케이션지원과 패스워드 인코딩방식이 개선되었다. 리액티브 논블로킹으로 비동기로 빠르게 처리한다.

 뭐 결국  SpringSecurityOAuth2로 지평 넓히고, 논블로킹으로 속도빠르게 했고 스프링 시큐리티6에 와서는 이제 AOT엔진과 함계 시작 시간 단축과, 메모리 사용절감의 효과를 누린다. 그리고 보안적으로 csrf 공격 보호, jdk 직렬화 보안기능이 강화되었다. 그리고 인가 즉 권한도 보다 세밀하게 할 수 있으니, 명실상부 발전의 지평을 넓히고 있다.

 역시 스프링부트3는 AOT엔진으로 클라우드 시대에 필수이다.

스프링 시큐리티는 기본적으로 사용자의 인증을 필터로 처리하게 설계되었다.

SpringSecurityFilters(+Authenticaiton+SecurityContext)를 통해서 인증 처리를 하는데 AuthenticiationMangaer로 관리하고, AuthenticationProvider를 통해 사용자에세 서비스하기 위해 사용자 관리하는데(UserDetails Manager/Service)하고 특히 인증에 있어서 가장 민감한 패스워드(PasswordEncoder)까지 인코딩처리 한다.

필터 잘 처리( SpringSecurityFilters )하고 인증( AuthenticationProvider )관련 제공해서 유저의 사용편이성을 높이는 것이다.

LIST