Spring 카카오 로그인 구현하기(Spring Security + OAuth2 + JWT)

2024. 7. 8. 01:51·Spring
목차
  1. Kakao Developers 기본 설정
  2. 1. Kakao Developers 접속 및 회원가입
  3. 2. 애플리케이션 추가
  4. 3. 대시보드 설정
  5. 카카오 로그인 구현하기
  6. 1. 카카오 로그인 과정
  7. 2. 카카오 로그인 구현
반응형

Kakao Developers 기본 설정

1. Kakao Developers 접속 및 회원가입

https://developers.kakao.com/

 

Kakao Developers

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

developers.kakao.com

 

2. 애플리케이션 추가

 

3. 대시보드 설정

- 카카오 로그인, 동의항목, Redirect URI 부분을 각자 필요 정보에 맞게 설정

 

3 - 1. 카카오 로그인 설정

 

- 활성화 후, Redirect URI를 다음과 같이 설정

 

3 - 2. 동의항목 설정

 

- 구현에서 활용하기 위한 닉네임 및 프로필 사진을 필수 및 선택 동의로 설정 진행

 

3 - 3. 앱키 확인

 

- 앱키에 기재되어 있는 REST API 키는 추후에 사용될 예정이므로 따로 메모

 


카카오 로그인 구현하기

1. 카카오 로그인 과정

https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api

 

Kakao Developers

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

developers.kakao.com

 

 

1 - 1. 과정 요약

  1. 인가 코드 받기
    • 서비스 서버로부터 카카오 인증 서버로 인가 코드를 요청
  2. 토큰 받기
    • 서비스 서버가 Redirect URI로 전달받은 인가 코드로 토큰을 요청
  3. 사용자 로그인 처리
    • 서비스 서버가 발급받은 액세스 토큰으로 사용자 정보를 요청해 사용자의 회원번호 및 정보를 조회하여 서비스 회원인지 확인

 

2. 카카오 로그인 구현

2 - 1. Spring Boot 기본설정

    - build.gradle

	implementation 'org.springframework.boot:spring-boot-starter-security'
	implementation 'org.springframework.security:spring-security-oauth2-client'

	implementation 'io.jsonwebtoken:jjwt-api:0.12.3'
	implementation 'io.jsonwebtoken:jjwt-impl:0.12.3'
	implementation 'io.jsonwebtoken:jjwt-jackson:0.12.3'

    - application.yml

spring:
  jwt:
    secret: {서비스만 알수있는 secret값 설정}
  security:
    oauth2:
      client:
        registration:
          kakao:
            client-id: {rest-api key}
            redirect-uri: http://localhost:8080/login/oauth2/code/kakao
            authorization-grant-type: authorization_code
            client-authentication-method: none
            client-name: Kakao
            scope: profile_nickname
        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

   

    다음과 같이 registration과 provider를 따로 설정해줘야 합니다.

 

2 - 2. 인가 코드 받기

  • 처음에 사용자가 카카오 로그인 버튼을 클릭하면 OAuth2AuthorizationRequestRedirectFilter.doFilterInternal()에서 application.yml 파일에서 설정했던 authorization-uri 내용을 확인해서 인가 코드를 redirect_uri로 GET 요청으로 돌려줍니다.

2 - 3 토큰 받기

 

  •     인가 코드와, client_id, redirect_uri를 기반으로 토큰 발급을 요청하게 됩니다.
  •     그럼 이를 기반으로 token_type과 access_token, refresh_token 등을 return하게 됩니다.
  •     해당 과정에서 동의항목에서 요청했던 부분에 대한 user 정보를 확인할 수 있습니다.

 

2 - 4 JWT 

 

  •     전달받은 user의 값을 활용하여, SuccessHandler에서 token을 생성합니다.
  •     해당 과정에서 사용된 createToken은 다음과 같습니다.

 

 

  •     token 생성은 기존에 application.yml에 기재했던 secretKey와 user정보들을 활용하여 Token을 생성합니다.
  •     후에 생성한 토큰값을 기반으로 쿠키 속성을 설정합니다.
  •     setHttpOnly : 자바스크립트에서 쿠키에 접근하지 못하게 합니다.
  •     setSecure : HTTPS 연결에서만 쿠키가 전송되도록 보장합니다.
  •     setPath : 쿠키의 유효 경로를 루트로 설정합니다.
  •     setMaxAge : 쿠키의 유효 기간을 설정합니다.

 

설정을 마무리한 후 설정된 쿠키를 HTTP 응답에 추가하여 클라이언트를 지정한 URL로 redirect 시키면서 로그인 처리가 완료됩니다.


 

 

반응형

'Spring' 카테고리의 다른 글

Spring Batch  (0) 2024.09.22
Spring Batch - Scheduler  (1) 2024.09.16
Spring Batch란?  (1) 2024.09.09
Spring Boot 회원가입 - 이메일(SMTP) 인증 구현하기  (0) 2024.07.28
Spring Boot Profile 설정  (0) 2024.07.22
  1. Kakao Developers 기본 설정
  2. 1. Kakao Developers 접속 및 회원가입
  3. 2. 애플리케이션 추가
  4. 3. 대시보드 설정
  5. 카카오 로그인 구현하기
  6. 1. 카카오 로그인 과정
  7. 2. 카카오 로그인 구현
'Spring' 카테고리의 다른 글
  • Spring Batch - Scheduler
  • Spring Batch란?
  • Spring Boot 회원가입 - 이메일(SMTP) 인증 구현하기
  • Spring Boot Profile 설정
Hyunily
Hyunily
    반응형
  • Hyunily
    Hyunily
    Hyunily
  • 전체
    오늘
    어제
    • 분류 전체보기 (45)
      • Daily (16)
      • 한화시스템 Beyond (6)
      • CS (3)
      • Database (10)
      • Monitoring (2)
      • Spring (8)
  • 블로그 메뉴

    • 홈
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Hyunily
Spring 카카오 로그인 구현하기(Spring Security + OAuth2 + JWT)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.