[게시판 프로젝트] 소셜로그인 기능 구현(1) - 카카오로 로그인 하기 - 카카오 API 사용준비/의존성/프로퍼티 설정
2024. 8. 27. 01:35ㆍCS/프로젝트
인증 주체는 카카오에게 넘기되,
카카오 서비스를 통해서 로그인 한 뒤
기존 회원 테이블에 동기화 시켜서 가입시키는 방법 사용
AuditingFields 접근자 수정 - 자식에 바로 access 가능하도록 protected로 변경
- UserAccount를 저장시킬때 AuditingFields를 직접 Access해야할 필요성
- (ex) 회원가입 상황 - 회원 가입 직접의 이용자의 상태는 아직 가입이 안된 상태 = 즉, 인증을 하지 않은 상태
- 인증(로그인)하지 않은 상태에서 회원 정보를 저장하려고 할때(회원 가입을 시도하려고 할때) 회원 정보가 저장이 되어야함
- [문제]
- Auditing Fields는 인증 정보로 부터 데이터를 가져옴 -> 따라서, createBy가 문제가 됨
- JPAConfig를 보면, 인증정보로부터 작성자의 정보를 가져옴(getUsername)
- 즉, 이 기능이 작동하려면 우선 인증(로그인)이 된 상태가 전제 되어야함
- but, 회원가입을 할 때는 로그인이 되어있지 않음 -> 따라서, 이 기능을 온전히 사용할 수 없음
- [해결]
- 따라서, 가능하게 하려면 첫 inserty를 할 때 우리가 직접 createdBy 나 modifiedBy를 넣어줘야함
- 따라서, UserAccount에서 AuditingFields에 접근하려면 접근자가 protected로 열려있어야함
Kakao Developers에서 카카오 API 사용 준비하기 - https://developers.kakao.com/
애플리케이션 등록하기 - 내 애플리케이션 - 애플리케이션 추가하기
Rest API 키 확인하기
- 네이티브 앱 키 : 휴대폰에서 사용
- Javascript 키 : 프론트엔드에서 인증을 통할 때 사용
- Admin 키 : 관리자 화면에서 사용
사이트 도메인 등록하기 - 플랫폼 - Web 플랫폼 등록
- 로컬에서 작동할 때를 고려한 도메인과 헤로쿠로 배포한 url 입력
- 현재 기본 도메인은 로컬이지만, 이후에 배포용 도메인으로 바꿔주는 것이 좋음
Redirect URI 등록하기
- 카카로 로그인을 사용하면, 인증이 카카오 쪽 인증 서버로 도메인이 변경됨
- 따라서, 카카오 쪽 인증 서버에서 인증을 마친 후, 다시 우리의 게시판 서비스로 돌아와야함
- 돌아올 수 있는 url를 카카오에 알려줘야함 - OAuth 기능 사용 시 필수적인 정보 : Redirect URI
- [공식문서]
Core Configuration :: Spring Security
If you are not able to use Spring Boot and would like to configure one of the pre-defined providers in CommonOAuth2Provider (for example, Google), apply the following configuration: OAuth2 Login Configuration @Configuration @EnableWebSecurity public class
docs.spring.io
- 공식문서에 따른 규칙
- 플랫폼 화면에서 등록하러 가기 클릭하거나, 메뉴 - 카카오 로그인
- 사이트 도메인을 포함하여, Redirect URI 설정
동의항목 설정하기
- 카카오 인증을 사용하게 되면, 카카오에서 제공해 주는 여러 회원 정보에 Access 할 수 있게 됨
- 따라서, 우리가 서비스 운영하기 위해 받았으면 하는 정보를 동의항목 설정해 주어야함
- 카카오계정(이메일) 권한을 부여 받기 위해서는, 비즈 앱 전환을 해 주어야함
Client Secret 키 확인하기

Spring Security OAuth2 Client 의존성 추가
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
카카오 OAuth2 스프링 프로퍼티 설정 추가
client
security:
oauth2:
client:
registration:
kakao:
client-id: id
client-secret: key
authorization-grant-type: authorization_code
redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
client-authentication-method: POST
- [OAuth Grant Types 공식 문서]
OAuth Grant Types
oauth.net
- 기본 도메인 그대로 넣으면, 노출되어서 불안 -> 공식문서의 코드 그대로 넣으면, 스프링 부트가 알아서 도메인 정보로 치환해줌
{baseUrl}/login/oauth2/code/{registrationId}
- yml 파일의 특성 상, {문자열}로 단순히 인식하지 못하기 때문에 -> 문자열 인식시켜주기 위해 의도적으로 "쌍따옴표"로 묶어줘야함
"{baseUrl}/login/oauth2/code/{registrationId}"
- API를 호출할 HTTP 메서드 지정
client-authentication-method:
provider
provider:
kakao:
authorization-uri: https://kauth.kakao.com/oauth/authorize
token-uri: https://kauth.kakao.com/oauth/token
user-info-uri: https://kapi.kakao.com/v2/user/me
user-name-attribute: id
- user-name-attribute
- REST API를 찔러서 인증정보를 데이터 바디로 불러올 때, 그 안에 여러 프로퍼디가 들어있음
- 그 프로퍼티 이름들 중 우리가 유저네임을 확인하기 위해 쓸 수 있는 식별자 정보가 무엇인지를 스프링 부트 프로젝트에 알려줘야함
- 카카오의 경우에는 id로 하고 있고, 사이트에 따라 그 내용은 바뀔 수 있음
- https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api
Kakao Developers
카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.
developers.kakao.com
'CS > 프로젝트' 카테고리의 다른 글
[게시판 프로젝트] 소셜 로그인 기능 구현(3) - 카카오로 로그인 하기 (0) | 2024.08.27 |
---|---|
[게시판 프로젝트] 소셜로그인 기능 구현(2) - 카카오로 로그인 하기 (0) | 2024.08.27 |
[게시판 프로젝트] 게시글 댓글 구현 - ArticleCommentController 코드 뜯어보며, 댓글 기능 프로세스 이해하기 (0) | 2024.08.26 |
[게시판 프로젝트] 게시판 검색 구현 (0) | 2024.08.26 |
[게시판 프로젝트] 페이지네이션(Pagination) 구현 (0) | 2024.08.26 |