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 사이트에 접속하여 로그인하여 ‘애플리케이션 추가하기’ 버튼을 누릅니다.

- 아래의 사이트에 접속하여 로그인을 수행합니다.

카카오계정

accounts.kakao.com

 
 

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

 

[더 알아보기]

💡 다른 항목은 '권한없음'으로 나오는 것은 뭐야?

- 아래와 같이 개인정보 동의항목 심사 신청을 해야합니다

 

 💡이를 위해 ‘비즈 앱 전환’을 수행해야합니다.

 

💡 개인 개발자 비즈 앱 전환 버튼을 누릅니다.

 

💡 이에 대한 전환이 완료되고 신청을 하면 아래와 같이 앱 권한에 대해 신청할 수 있습니다.

 

💡 이에 대한 전환이 완료되고 신청을 하면 아래와 같이 앱 권한에 대해 신청할 수 있습니다.

 
 

💡 [참고] 만약에 테스트만을 위한 목적이라면 아래의 링크를 참고하여 설정 하시면 앱 개인정보 권한을 획득 할 수 있습니다.

[Java] OAuth 2.0 카카오 개발자(Kakao Developers) 동의항목 권한 없음 해결 방법 : 테스트 앱 생성

해당 글에서는 카카오 개발자(Kakao Developers) 동의항목 중 권한 없음에 대한 해결 방법으로 테스트 앱 생성 방법을 이용하여 권한을 받는 방법에 대해 알아봅니다.1) 문제점 확인💡 문제점 확인-

adjh54.tistory.com

 
 

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인증 방식
GEThttps://kauth.kakao.com/oauth/authorize-
POSThttps://kauth.kakao.com/oauth/token-
GET/POSThttps://kapi.kakao.com/v2/user/me액세스 토큰서비스 앱 어드민 키

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

 

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_jwtJWT(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

 
 
 
 
오늘도 감사합니다😀

반응형