Java/환경구성
[Java] Spring Boot 환경에서 OAuth 2.0 설정 -1: 카카오 로그인 설정 및 구성요소 확인
adjh54
2024. 10. 31. 23:56
반응형
해당 글에서는 Spring Boot 환경에서 OAuth 2.0 설정을 위해 카카오 로그인 설정 및 구성요소에 대해 알아봅니다.
1) 최초 카카오 개발자 설정
1. Kakao Developers 사이트에 접속하여 로그인하여 ‘애플리케이션 추가하기’ 버튼을 누릅니다.
💡 Kakao Developers 사이트에 접속하여 로그인하여 ‘애플리케이션 추가하기’ 버튼을 누릅니다.
- 아래의 사이트에 접속하여 로그인을 수행합니다.
2. 애플리케이션의 정보를 입력하고 ‘저장’ 버튼을 누릅니다.
💡 아래와 같이 추가됨을 확인하였습니다.
3. 제품 설정 > 카카오 로그인 > 활성화 설정 부분에서 상태를 ‘ON’으로 변경해줍니다.
4. 앱 설정 > 플랫폼 > 구성하려는 플랫폼 등록 버튼을 누릅니다.
5. 플랫폼 등록 중 사이트 도메인을 입력해줍니다.
💡 플랫폼 등록 중 사이트 도메인을 입력해줍니다
- Front-end에서 사용되는 도메인 주소를 작성합니다.
- 예를 들어서, local로 react기반 웹 브라우져를 이용하는 경우 http://localhost:3000 포트로 기본 포트를 이용합니다.
6. 도메인 등록이 완료되었고, ‘등록하러 가기’ 버튼을 누릅니다.
7. Redirect URL 내에서 Redirect URL 등록 버튼을 누릅니다.
💡 Redirect URL 내에서 Redirect URL 등록 버튼을 누릅니다
- 사용자가 카카오 로그인을 완료한 후 리다이렉트될 주소입니다.
- 카카오 서버가 인증 코드나 액세스 토큰을 이 URL로 전송합니다.
- 보안상의 이유로 카카오 개발자 콘솔에 미리 등록해야 합니다.일반적으로
- 백엔드 서버의 엔드포인트를 지정합니다. (예: http://localhost:8080/login/oauth2/code/kakao)
8. Redirect URL을 입력합니다.
💡Redirect URL을 입력합니다.
- 해당 경우에서는 spring boot api server의 엔드포인트로 지정을 하였습니다.
http://localhost:8000/api/v1/oauth2/kakao
9. 제품 설정 > 보안 > Client Secret > ‘코드 생성’ 버튼을 누릅니다.
10. Client Secret 활성화 상태를 ‘설정’하여 활성화로 변경합니다.
11. 해당 필요한 항목에 대해 ‘설정’ 버튼을 누릅니다.
항목 이름 | ID |
닉네임 | profile_nickname |
프로필 사진 | profile_image |
카카오계정(이메일) | account_email |
이름 | name |
성별 | gender |
연령대 | age_range |
생일 | birthday |
출생 연도 | birthyear |
카카오계정(전화번호) | phone_number |
CI(연계정보) | account_ci |
카카오 서비스 내 친구목록(프로필사진, 닉네임, 즐겨찾기 포함) | friends |
카카오톡 채널 추가 상태 및 내역 | plusfriends |
배송지정보(수령인명, 배송지 주소, 전화번호) | shipping_address |
[더 알아보기]
💡 다른 항목은 '권한없음'으로 나오는 것은 뭐야?
- 아래와 같이 개인정보 동의항목 심사 신청을 해야합니다
💡이를 위해 ‘비즈 앱 전환’을 수행해야합니다.
💡 개인 개발자 비즈 앱 전환 버튼을 누릅니다.
💡 이에 대한 전환이 완료되고 신청을 하면 아래와 같이 앱 권한에 대해 신청할 수 있습니다.
💡 이에 대한 전환이 완료되고 신청을 하면 아래와 같이 앱 권한에 대해 신청할 수 있습니다.
💡 [참고] 만약에 테스트만을 위한 목적이라면 아래의 링크를 참고하여 설정 하시면 앱 개인정보 권한을 획득 할 수 있습니다.
12. 각각 항목에 대해 필요 목적을 확인합니다.
2) 접속 정보 기반 테스트
1. 앱 설정 > 앱 키 중 ‘REST API 키’를 확인합니다.
2. 제품 설정 > 카카오 톡 로그인 중 ‘Redirect URL’을 확인합니다.
3. 위에 정보들을 기반으로 웹 페이지 내에 접속하면 카카오톡 로그인 접속이 됨을 확인되었습니다.
💡위에 정보들을 기반으로 웹 페이지 내에 접속합니다
https://kauth.kakao.com/oauth/authorize?client_id={REST_API_KEY}&redirect_uri={REDIRECT_URI}&response_type=code
# {REST_API_KEY} : ‘앱 설정’ > ‘요약정보’ > ‘REST API 키’ 내에서 확인이 가능합니다.
# {REDIRECT_URI} : 위에서 지정한 REDIRECT_URL을 참고하시면 됩니다.
3) application.properties 설정 파일 확인
💡 application.properties 설정 파일 확인
- Spring Boot 크게는 provider, registration로 구분이 되어 있습니다.
- provider의 경우는 OAuth2 인증 제공자에 대한 설정 정보를 포함합니다.
- registration의 경우는 클라이언트 애플리케이션(Spring Boot APP)에 대한 설정을 포함합니다.
spring:
security:
oauth2:
client:
# OAuth2 인증 제공자(카카오)에 대한 설정 정보를 포함합니다.
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
# 클라이언트 애플리케이션(Spring Boot)에 대한 설정을 포함합니다.
registration:
kakao:
client-id: 5072a6bf1008322ff506e7021db3ed63
redirect-uri: http://localhost:8080/login/oauth2/naver
authorization-grant-type: authorization_code
client-authentication-method: POST
client-name: Kakao
scope:
- name
- profile_nickname
- account_email
1. client.provider 구성
💡 client.provider 구성
- OAuth2 인증 제공자에 대한 설정 정보를 포함하는 부분입니다. 여기서는 카카오 로그인을 위한 설정을 정의하고 있습니다.
항목 | 설명 |
authorization-uri | 사용자 인증을 위한 URL입니다. 사용자가 카카오 로그인 페이지로 리다이렉트될 때 이 주소가 사용됩니다. |
token-uri | 액세스 토큰을 발급받기 위한 URL입니다. 인증 코드를 액세스 토큰으로 교환할 때 이 주소로 요청을 보냅니다. |
user-info-uri | 인증된 사용자의 정보를 가져오기 위한 URL입니다. 발급받은 액세스 토큰을 사용하여 이 주소로 사용자 정보를 요청합니다. |
user-name-attribute | 사용자 정보 응답에서 사용자 식별자로 사용할 속성을 지정합니다. 카카오의 경우 'id'로 설정되어 있어, 이 값을 통해 사용자를 구분합니다. |
2. clinet.provider API 가이드
메서드 요청 | URL | 인증 방식 |
GET | https://kauth.kakao.com/oauth/authorize | - |
POST | https://kauth.kakao.com/oauth/token | - |
GET/POST | https://kapi.kakao.com/v2/user/me | 액세스 토큰서비스 앱 어드민 키 |
3. client.registration 구성
3.1. registration.kakao.client-id, client-secret 값은 앱 설정 > 앱 키, 제품 설정 > 보안 내의 코드에서 확인이 가능합니다.
항목 | 설명 |
registration.kakao.client-id | 카카오 개발자 사이트에서 생성한 애플리케이션의 고유 식별자. REST API 키와 동일하며, 카카오 API 사용 시 클라이언트 인증에 사용됨. |
registration.kakao.client-secret | 애플리케이션의 보안을 강화하기 위한 비밀 키. 카카오 개발자 사이트에서 생성 가능하며, 토큰 요청 시 추가적인 보안 계층으로 사용됨. 절대 공개되어서는 안 되며 서버 측에서만 안전하게 관리되어야 함. |
3.2. registration.kakao.redirect-uri 값은 내 애플리케이션 > API 설정 탭 > 네이버 로그인 Callback URL을 활용합니다.
항목 | 설명 |
registration.kakao.redirect-uri | 카카오 로그인 후 사용자가 리다이렉트될 URL. 카카오 개발자 사이트의 '내 애플리케이션 > API 설정 탭'에서 설정한 Callback URL과 일치해야 함. |
3.3. client-authentication-method 값은 아래와 같은 값을 가집니다.
💡client-authentication-method 값은 아래와 같은 값을 가집니다.
- OAuth 2.0 클라이언트가 인증 서버에 자신을 인증하는 방법을 지정합니다
인증 방식 | 설명 |
client_secret_basic | 클라이언트 ID와 시크릿을 Base64로 인코딩하여 Authorization 헤더에 포함시킵니다. |
client_secret_post | 클라이언트 ID와 시크릿을 요청 본문에 포함시킵니다. |
client_secret_jwt | JWT(JSON Web Token)를 사용하여 클라이언트를 인증합니다. |
private_key_jwt | 비공개 키로 서명된 JWT를 사용하여 클라이언트를 인증합니다. |
3.4. registration.naver.scope 값은 제품설정 > 카카오 로그인 > 동의항목 내에 선택한 사항에 따라 받을 수 있고, 각각 항목의 이름을 아래와 같습니다.
항목 이름 | ID |
닉네임 | profile_nickname |
프로필 사진 | profile_image |
카카오계정(이메일) | account_email |
이름 | name |
성별 | gender |
연령대 | age_range |
생일 | birthday |
출생 연도 | birthyear |
카카오계정(전화번호) | phone_number |
CI(연계정보) | account_ci |
카카오 서비스 내 친구목록(프로필사진, 닉네임, 즐겨찾기 포함) | friends |
카카오톡 채널 추가 상태 및 내역 | plusfriends |
배송지정보(수령인명, 배송지 주소, 전화번호) | shipping_address |
오늘도 감사합니다😀
반응형