본문 바로가기
학원수업/4월

04/26 국비학원 개발자과정 Spring security

by 코딩마스터^^ 2023. 4. 26.

스프링 시큐리티 흐름

 

1.spring-security.jar를 추가했다

 

2.모든 페이지 접근이 불가능해졌다.

 

3.권한이 있어야 페이지 출력이 가능했다.

 

개인 포폴 만들때는 내가 주도해서 스프링 시;큐리티도 해보자...

 

4.내가 로그인 화면을 구성하지 않았음에도 로그인 화면으로 유도된다. 

 

5.FilterChain이 제공되고있었다... 난 몰랐다....

스프링에서 제공되는 여러가지 종류의 필터체인이 있다.

서블릿으로 연결되기도 전에 필터들이 낚아챈다. 인터셉트

필터를 통해 인터셉트

 

6. 사용자 정의 화면으로 구성을 하고싶다->SecurityConfig.java추가하였다.

->더이상 스프링에서 제공하는 페이지로 가지 않아도 된다.

 

7.사용자 정의 시큐리티 코딩 전개하기

: 스프링 시큐리티는 스프링 시큐리티 세션을 들고있다.

서버 세션 영역 안에 시큐리티가 관리하는 세션이 따로 존재함

기존에 사용

HttpSession session = request,getSession()

->보안적인 이슈가 있었다.

 

스프링이 제어권을 가져왔다.

시큐리티 세션에는 Authentication객체만 들어갈 수 있다.

Authentication이 시큐리티세션 안에 들어 있다는것은 로그인된 상태라는 의미

Authentication에는 2개의 타입이 들어간다

UserDetails -> PrincipalUserDetails

OAuth2User

 

문제제기

1. 세션이 두개의 타입이라 컨트롤러에서 처리가 복잡해 질 수 있다.

일반 개발자 정의 로그인에서는 UserDetails타입으로 Authentication객체가 만들어지고

구글로그인처럼 소셜 로그인을 할 때에는 OAuth로그인시에는 OAuth2User 타입으로 Authentication객체가 생성되도록 해준다.

해결방법!

두개를 PrincipalDetials에 UserDetails, OAuth2User를 implements를 한다.

PrincipalDetails하나의 클래스 만으로도 구글, 일반 로그인 처리를 할 수 있다.

Principal안에다가 다중상속으로 처리 할 예정이다.

 

댓글