728x90
OAuth2가 필요한 이유
사용자가 어떤 서비스를 이용하기 위해서는 대부분 로그인을 해야합니다.
하지만 사용자는 자신의 정보를 여러 어플리케이션에 등록하는 것이 좋지는 않습니다.
OAuth2는 인증과 인가를 외부 서버에 위임해서 사용자의 비밀번호와 같은 중요한 정보를 해당 어플리케이션에서
알리지 않고 서비스를 사용할 수 있습니다.
또한 어플리케이션의 입장에서는 인증과 인가에 대한 작업을 위임하기 때문에 Session과 같이 서버에 부담이 가는
기능을 하지 않을 수 있다는 장점이 있습니다.
OAuth2 동작 과정
OAuth2의 동작과정은 아래 사진과 같습니다.
위의 사진에 있는 박스안에 요소들은 OAuth2의 구성 요소입니다.
Client | 인증을 요청하는 서버 즉, 개발한 어플리케이션 |
Resource Owner | 자원의 주인인 사용자 |
Resource Server | 외부 서비스의 서버중 사용자의 정보를 저장한 서버 |
Authorization Server | 외부 서비스의 서버중 사용자의 권한을 부여하는 서버 |
위의 4개 요소가 OAuth2를 구성하는 요소입니다.
OAuth2의 인증과정은 위 그림의 5번까지에 해당합니다.
OAuth2를 통한 어플리케이션의 사용자 인증,인가 과정은 아래와 같습니다.
1. 사용자가 SNS 로그인과 같이 외부 서비스를 통한 로그인을 요청(카카오,네이버 로그인을 선택)
2. 매핑된 외부 서비스의 URI 주소로 Redirect를 시켜 인증 페이지 제공
3. 인증이 완료되었다면 Client(어플리케이션)에 code(인증이 완료되었다는 증거)를 전송
4. code를 통해 Client가 Authorization 서버에게 해당 사용자의 정보와 Token을 요청
5. 사용자의 정보와 Token을 통해서 Resource Server에서 사용자 관련 자원을 응답
OAuth2 구성 Class
OAuth2 서비스를 사용하기 위해서 구성해야 할 Class와 기능은 아래와 같습니다.
OAuth2AuthorizationFilter | OAuth2로그인 요청시 외부 인증 서버로 매핑하는 Filter URL 규칙- "/oauth2/authorization/서비스명(naver,kakao)" |
OAuth2AuthenticaitonFilter | OAuth2 인증 성공시 Redirect 주소 매핑하는 Filter URL 규칙- "/login/oauth2/code/서비스명(naver,kakao)" |
OAuth2UserService | OAuth2 인증 성공시 전송되는 사용자 Data를 추출후 저장 |
OAuth2User | OAuth2UserService에서 추출한 사용자 Data의 저장객체 |
Response DTO(Attribute) | OAuth2UserService를 통해 가져온 OAuth2User의 attribute를 담을 DTO클래스 |
Security Config | HttpSercurity에 .oauth2Login(.....)설정을 통해 OAuth2의 흐름을 설정 |
다음글에서는 위의 Class들을 구현하겠습니다.
'Spring Security' 카테고리의 다른 글
OAuth2 구현 (0) | 2024.02.07 |
---|---|
JWT 로그인 구현 (0) | 2024.02.04 |
JWT (0) | 2024.01.29 |
Session VS JWT (0) | 2024.01.18 |
로그인 인증 과정 (0) | 2024.01.16 |