99클럽 29일차 TIL: OAuth
2024. 5. 2. 18:36ㆍ개발 공부
728x90
반응형
#1. 오늘의 학습 키워드
OAuth에 대해
- 인증에는 여러 방법이 있고 저번에는 JWT 에 관한 포스트 글을 작성하였다.
- https://second-brain.tistory.com/46
- 제일 익숙했던 방식이고, 실제로 사용 중이던 방식이 JWT 인증 방식이었다.
- 다른 인증 방식에 대해서도 알아보자.
- 이번엔 OAuth 에 대해 알아봅시다.
#2. 공부한 내용
1. OAuth
- 사용자들이 특정 서비스를 입력할 때 직접 비밀번호를 입력하지 않고, 연동되는 외부 웹 / 앱의
인증 정보를 통해 해당 서비스를 이용하는 방식의 접근 위임을 위한 개방형 표준.
- 실생활에서 인터넷을 조금만 하더라도 흔히 접할 수 있는 방식의 인증 절차다.
- ex) 프로그래머스 사이트
- 카카오 로그인
- 네이버 로그인
- 구글 로그인
- 등등..
- ex) 프로그래머스 사이트
1) 구성 요소
- Resource Owner
- 개인정보 소유자
- 즉 서비스를 이용하려는 사람
- Client
- 어플리케이션 서버
- 위 예시에서는 프로그래머스 서버
- Authorization Server
- 권한을 부여해주는 서버
- 사용자 및 Client 는 해당 서버로 ID, PW 전송 → Token 전달받음
- Resource Server
- 개인정보 서버
- 즉 개인정보 소유자의 개인정보를 가지고 있는 어플리케이션 서버
- 위 예시에서는 카카오, 네이버, 구글 등
- Access Token
- 접근 권한을 인가했음을 나타내는 자격 증명.
- Authorization Server가 Resource Owner 로부터 정확한 ID, PW 를 전달받고 Authorization Code로 준다.
- 그리고 Client 는 Resource Owner 로부터 Authorization Code 를 전달 받고, 그 후 Authorization Server 로 해당 코드를 통해 Access Token 을 요청한다.
- Refresh Token
- Authorization Server 는 비교적 짧은 유효기간을 갖는 Access Token 과 비교적 긴 유효기간을 갖는 해당 Refresh Token을 동시에 제공한다.
2) OAuth 를 통한 인증 프로세스
- 사용자가 프로그래머스 사이트에 접속하여 네이버 아이디로 로그인 한 후 서비스를 이용하는 절차를 UML 다이어그램을 통해 표현했다.
2. Spring 에서의 사용
- JWT 에서와 마찬가지로 Spring 에서는 Spring Security 프레임워크로 OAuth 인증을 지원한다.
- 이때는 OAuth 방식을 사용하므로 OAuth 2.0 을 같이 사용한다.
구현
- 간략한 절차에 대한 설명.
- 추후 직접 연동하였을 때 자세하게 다뤄보겠다.
- 우선 연동하고 싶은 Resource Server에서 OAuth Client ID 를 발급받는다.
- application-oauth.properties 파일 설정
- .gitIgnore 등록하여 config 정보가 외부에 공개되지 않게 조심하자.
spring.security.oauth2.client.registration.google.client-id=(클라이언트 ID)
spring.security.oauth2.client.registration.google.client-secret=(클라이언트 보안 비밀번호)
spring.security.oauth2.client.registration.google.scope=profile,email
- 스프링 시큐리티 설정
- 빌드 그래들
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
- 로그인 정보를 담는 Entity 설정 (JPA)
- role entity 생성
- user entity 생성
- user repository 생성
- User DAO - CRUD 메서드
- Service 코드 및 Config 작성
- 로직
- 참조:
#3. 오늘의 회고
- 정리:
- OAuth 는 인증 및 인가를 위한 개방형 표준 프로토콜로, 서드파티 어플리케이션에서 사용자의 데이터에 접근할 수 있는 권한을 부여하는 데에 사용된다.
- 장점:
- 사용자 편의성
- 따로 회원가입할 필요가 없다.
- 보안 강화
- 사용자의 계정 정보를 통한 인증이 아닌 Access Token을 통해 수행
- 유연성
- 다양한 어플리케이션 간 통합을 용이하게 도와줌
- 다양한 인증 방식을 지원
- 사용자 편의성
728x90
반응형
'개발 공부' 카테고리의 다른 글
99클럽 31일차 TIL: 토큰 인증 (0) | 2024.05.04 |
---|---|
99클럽 30일차 TIL: Basic 인증 (1) | 2024.05.03 |
99클럽 28일차 TIL: JWT (1) | 2024.05.01 |
99클럽 27일차 TIL: 아키텍처 패턴 - SOA (0) | 2024.04.30 |
99클럽 26일차 TIL: 아키텍처 패턴 - 모노레포 (0) | 2024.04.29 |