1. 도입배경
- 프로젝트 진행 중, 사용자 편의를 위해 소셜 아이디로 간편하게 로그인할 수 있는 기능을 구현할 필요성을 느꼈습니다.
- 많은 사이트에서 사용하는 OAuth 2.0 방식을 도입하여 보안성을 높이고 로그인 과정을 간소화하였습니다.
2. OAuth2
1) OAuth2 란?
- OAuth 2.0은 사용자의 로그인 정보를 공유하지 않고도 애플리케이션이 외부 서비스에 안전하게 접근할 수 있게 해주는 인증 및 권한 위임 방식입니다.
- Google, Naver, Kakao와 같은 플랫폼들이 이를 위한 API를 제공하고 있습니다..
- OAuth 2.0에서는 사용자의 아이디와 비밀번호를 직접 다루지 않고 토큰 기반 인증을 통해 권한을 부여합니다
2) 왜 OAuth2를 쓰는가?
- 보안성: 애플리케이션 데이터베이스(DB)에서 사용자의 아이디와 비밀번호를 직접 관리할 필요가 없어 보안 위협이 줄어듭니다.
- 사용자 정보 최소화: 사용자는 이름, 이메일 등 최소한의 정보만으로 서비스를 이용할 수 있습니다. 이로써 개인 정보 노출이 최소화되며, 정보 유출 위험이 감소합니다.
- 안전한 사용자 식별: OAuth 2.0에서는 서비스 제공자(예: Google, Naver 등)에서 부여한 사용자 고유 ID를 통해 사용자 식별이 가능하여, 클라이언트는 실제 이름이나 이메일등 민감한 정보를 외부에 노출하지 않고도 서비스 이용이 가능합니다..
3) OAuth2 로그인 다이어그램
- 실제 프로젝트에선 Spring Security와 OAuth2 라이브러리를 결합하여 좀더 복잡하지만, 서블릿 필터같은 부분은 제외하고 최대한 간단하게 다이어그램을 나타내었습니다.
- 유저가 웹사이트에서 로그인버튼을 클릭합니다.
- WAS에서는 미리 설정해둔 Naver OAuth2 로그인 페이지로 클라이언트를 리다이렉트시킵니다.
- Naver서버에서는 URL 유효성을 판단한후, 로그인 페이지를 클라이언트에게 전달합니다.
- 클라이언트는 ID/PW를 입력하여 Naver 서버에 전송합니다.
- 유저 정보가 옳다면 Naver 서버는 미리 설정된 WAS URL로 엑세스 토큰을 전송합니다. 엑세스 토큰에는 유저정보가 들어있는게 아닌, 유저정보에 접근하기 위한 정보가 저장되어 있습니다.
- WAS는 미리 발급받은 엑세스 ID,key 와 유저정보 엑세스 토큰을 포함해 Naver 서버에 유저정보를 요청합니다.
- Naver 서버는 유효성 을 검사한 후 유저정보를 전송합니다. 이때 전송되는 정보는 개발자가 미리 설정된 값입니다.
- WAS는 받아온 유저 데이터를 처리한 후(DB 저장, 권한 부여등..) Session을 생성,저장하고 Session Cookie를 유저에게 전송합니다.
'Spring' 카테고리의 다른 글
[Spring] Quartz 스케줄러로 자동화 -1 도입배경,개념 (0) | 2024.11.27 |
---|---|
[Spring] OAuth2 기반 회원 인증 시스템 도입 (2) - Naver 로그인 구현,Spring코드 구현 (1) | 2024.11.07 |
[Spring] Full-Text Index를 활용한 DB 검색 성능 최적화 (2) - Spring 코드 구현, 성능 비교 테스트 (1) | 2024.11.06 |
[Spring] Full-Text Index를 활용한 DB 검색 성능 최적화 (1) 도입배경, MySQL Full-Text Index 생성 (0) | 2024.11.06 |
[Spring] Redis 기반 세션 스토리지 구축 (3)- Redis vs MySQL 성능비교 (0) | 2024.11.01 |