본문 바로가기
SpringBoot

kakao 로그인 - 2

by 남행비 2023. 9. 26.

 

OAuth 2.0 이란 (Open Authorization)

사용자가 자신의 계정 정보를 직접 공유하지 않아도 서드 파티 애플리케이션들이 제한된 접근을 할 수 있게 해줍니다.

 

카카오 로그인은 카카오계정으로 다양한 서비스에 로그인할 수 있도록 하는 소셜 로그인 서비스입니다. 카카오싱크는 서비스 간편가입 등 카카오 로그인에 더 다양한 확장 기능을 제공하는 비즈니스 설루션입니다. 카카오 로그인과 카카오싱크가 제공하는 핵심 기능은 다음과 같습니다.

 

카카오 devolpoer

https://developers.kakao.com/

 

Kakao Developers

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

developers.kakao.com

The authorization code grant type is used to obtain both access
   tokens and refresh tokens and is optimized for confidential clients.
   Since this is a redirection-based flow, the client must be capable of
   interacting with the resource owner's user-agent (typically a web
   browser) and capable of receiving incoming requests (via redirection)
   from the authorization server.

     +----------+
     | Resource |
     |   Owner  |
     |          |
     +----------+
          ^
          |
         (B)
     +----|-----+          Client Identifier      +---------------+
     |         -+----(A)-- & Redirection URI ---->|               |
     |  User-   |                                 | Authorization |
     |  Agent  -+----(B)-- User authenticates --->|     Server    |
     |          |                                 |               |
     |         -+----(C)-- Authorization Code ---<|               |
     +-|----|---+                                 +---------------+
       |    |                                         ^      v
      (A)  (C)                                        |      |
       |    |                                         |      |
       ^    v                                         |      |
     +---------+                                      |      |
     |         |>---(D)-- Authorization Code ---------'      |
     |  Client |          & Redirection URI                  |
     |         |                                             |
     |         |<---(E)----- Access Token -------------------'
     +---------+       (w/ Optional Refresh Token)

   Note: The lines illustrating steps (A), (B), and (C) are broken into
   two parts as they pass through the user-agent.

OAuth 2.0은 인증을 위한 프레임워크로, 아래와 같이 네 가지 주요 인증 방식을 제공합니다

1. Authorization Code Grant (인증 코드 부여)

  • 개념:
    • 이 방식은 세 번째 자(Third-party) 애플리케이션에 액세스 토큰을 직접 전달하지 않습니다.
    • 대신 인증 코드가 클라이언트로 전달되며, 이 코드를 사용하여 액세스 토큰을 얻을 수 있습니다.
  • 사용처:
    • 웹 애플리케이션이나 모바일 애플리케이션과 같이 클라이언트 비밀(client secret)을 안전하게 보관할 수 있는 환경에서 사용됩니다.
  • 흐름:
    1. 유저가 클라이언트를 통해 리소스 소유자로 로그인합니다.
    2. 인증 서버는 인증 코드를 클라이언트에게 반환합니다.
    3. 클라이언트는 인증 코드와 클라이언트 비밀을 인증 서버에게 전송하여 액세스 토큰을 얻습니다.

2. Implicit Grant (암시적 부여)

  • 개념:
    • 이 방식은 클라이언트에게 인증 코드를 제공하는 대신 바로 액세스 토큰을 전달합니다.
  • 사용처:
    • 주로 JavaScript를 사용한 클라이언트 사이드 애플리케이션에서 사용됩니다.
    • 이 방식은 클라이언트 비밀을 저장할 수 없는 상황에서 사용됩니다.
  • 흐름:
    1. 유저가 클라이언트를 통해 리소스 소유자로 로그인합니다.
    2. 인증 서버는 액세스 토큰을 바로 클라이언트에게 반환합니다.

3. Resource Owner Password Credentials Grant (리소스 소유자 암호 자격증명 부여)

  • 개념:
    • 이 방식은 사용자의 아이디와 비밀번호를 직접 요구합니다.
    • 사용자의 자격 증명을 사용하여 액세스 토큰을 얻을 수 있습니다.
  • 사용처:
    • 이 방식은 클라이언트가 사용자의 자격증명을 안전하게 처리할 수 있을 때, 특히 사용자와 클라이언트 사이에 높은 신뢰가 있을 때 사용됩니다.
  • 흐름:
    1. 유저가 아이디와 비밀번호를 클라이언트에게 제공합니다.
    2. 클라이언트는 이 자격 증명을 사용하여 인증 서버에 액세스 토큰을 요청합니다.

4. Client Credentials Grant (클라이언트 자격증명 부여)

  • 개념:
    • 이 방식은 클라이언트 자격증명을 사용하여 액세스 토큰을 얻는 방법입니다.
  • 사용처:
    • 이 방식은 클라이언트 자체의 리소스에 접근할 때 주로 사용됩니다.
  • 흐름:
    1. 클라이언트는 자신의 ID와 비밀번호를 사용하여 인증 서버에 액세스 토큰을 요청합니다.

각 인증 방식은 상황과 요구 사항에 따라 다르게 적용될 수 있으며, 각 방식의 보안 리스크와 트레이드 오프를 고려하여 적절한 방식을 선택해야 합니다.

 

 

 

1. 내 애플리케이션 들어가서 애플리케이션 추가하기


   - 앱 이름 설정(사용자에게 노출되는 항목)
   - 사업자명 설정
   - 약관 체크 후 저장
   - 생성 후 클릭해서 들어간 후 
   - REST API 키 복사

 

 

 

앱 이름 사업자명 설정 후 저장

 

REST API 키 복사

 

2. 플랫폼 등록 하기 - (내 애플리케이션)


 - Web 플랫 설정 - 기본 도메인 저장(http://localhost)
 - Redirect URI 등록하기(http://localhost:80/user/kakao/callback)

 

설정하기 클릭

 

등록 클릭

 

도메인주소 넣기

 

등록하러 가기 클릭

 

활성화 버튼 눌러서 ON으로 만들기

 

등록 클릭

 

주소 복사해서 적어둔 후 저장 (★주소 중요)

 

3. 동의 항목 설정하기(내 애플리케이션)

 

내 애플리케이션 메뉴 그대로인 상태로 옆에 카카오 로그인 보면 동의항목클릭

 

옆에 설정 클릭

 

설정했을때 안했을때 미리보기화면 달라짐

 

4. 리소스 다운로드 - (문서) 확인

문서에 카카오 로그인 메뉴

 

리소스 다운로드

 

집 파일 다운 후 아무데나 압축풀기

 

들어가서 원하는 사진 이미지파일만들어서 복붙

 

유저컨트롤러에 추가

 

로그인jsp 버튼 밑에 추가

 

현재까지 진행 상태

 

5. 인가 코드 요청설계

요청 필수값 확인가능

 

복사해두기

 

아까 복사해둔 내가 발급받은 RESTAPI랑RESTURL ${~}에 넣어주기

 

jsp가서 경로설정해주기

 

화면까지 완료

 

6. UserContorller 에서 코드 설계

응답

 

위 문서를 해석하면 이런식으로 주소가 와야함
여기까지가 인가코드 받아내는 코드
인가코드 받아낸 결과

 

7. 액세스 토큰 받기

   - POST 방식으로  https://kauth.kakao.com/oauth/token 요청

 

토큰 받아내기 위해 (POST 방식으로 함)URL 복사해두기

 

토큰 요청시 헤더 필수적인 형식
body에 맨밑 client빼고는 필수로 넣어줘야함

 

그럼 이러한 값을 받아낼 수 있음

 

요청대로 작성한 코드(사진안 코드 작성하면서 설명)

 

토큰 받아낸 결과
카카오로 로그인.txt
0.00MB

 

'SpringBoot' 카테고리의 다른 글

kakao 로그인 - 3  (0) 2023.09.27
CUGGI (쇼핑몰 프로젝트)  (0) 2023.09.26
kakao 로그인 - 1  (0) 2023.09.26
BankApp - 암호화 처리  (0) 2023.09.22
BankApp - 마이그레이션  (0) 2023.09.22