Java/환경구성

[Java] Spring Boot 환경에서 OAuth 2.0 설정 -2 : 네이버 로그인 설정 및 구성요소 확인

adjh54 2024. 11. 1. 00:11
반응형
해당 글에서는 Spring Boot 환경에서 OAuth 2.0 설정을 위해 네이버 로그인 설정 및 구성요소에 대해 알아봅니다. 

 

1) 최초 네이버 개발센터 설정


 

1. 네이버 개발센터 : NAVER Developers 중 네이버 로그인 API를 접속하여 ‘오픈 API 이용 신청’ 버튼을 누릅니다.


네이버 로그인 - INTRO

환영합니다 네이버 로그인의 올바른 적용방법을 알아볼까요? 네이버 로그인을 통해 신규 회원을 늘리고, 기존 회원은 간편하게 로그인하게 하려면 제대로 적용하는 것이 중요합니다! 이에 올바

developers.naver.com

 
 

2. 약관 동의를 선택하고 ‘확인’ 버튼을 누릅니다.


 

3. 휴대폰 인증을 한 뒤, 회사 이름을 작성하고 ‘확인’ 버튼을 누릅니다.


4. 애플리케이션 이름을 작성하고, 사용 API를 ‘네이버 로그인’으로 선택합니다.


 
 
 

5. 로그인에서 수집되는 권한들을 선택합니다.


 
 

6. 제공 정보 선택을 하고 서비스 URL, CallBack URL을 입력합니다.


💡제공 정보 선택을 하고 서비스 URL, CallBack URL을 입력합니다.

💡 서비스 URL

- 네이버 로그인을 사용하는 서비스의 주 웹사이트 주소입니다. 사용자가 로그인 후 돌아갈 기본 페이지를 나타냅니다
- ex) 로컬 Node 서버 URL : http://localhost:3000


💡 네이버 로그인 CallBack URL(최대 5개)

- 네이버 로그인 인증이 완료된 후 사용자를 리다이렉턴 할 URL입니다.
- 인증 과정에서 발생한 정보를 받아 처리하는 엔드포인트입니다.
- 최대 5개까지 등록할 수 있어 다양한 시나리오에 대응할 수 있습니다.
ex) API 서버 URL : http://localhost:8080/api/v1/oauth2/naver 엔드포인트로 받아서 이후 후처리를 수행합니다.

 

 

7. 아래와 같은 최종 설정을 확인하였습니다.


 
 

2) 접속 정보 기반 테스트


 

1. 내 애플리케이션에서 Client ID와 Client Secret에 대해 확인합니다.


 

2. API 설정 탭 > 로그인 오픈 API 서비스 환경 중 네이버 로그인 Callback URL을 확인합니다.


 

3. 위에 정보들을 기반으로 웹 페이지 내에 접속하면 네이버 로그인 접속이 됨을 확인되었습니다.


 

https://nid.naver.com/oauth2.0/authorize?client_id={CLIENT_ID}&redirect_uri={YOUR_CALLBACK_URL}&response_type=code&state=RANDOM_STATE

# {CLIENT_ID} : 내 애플리케이션 > 개요 > 애플리케이션 정보 > 'Client ID'에서 확인이 가능합니다.
# {REDIRECT_URI} : 내 애플리케이션 > API 설정 > 로그인 오픈 API 서비스 환경 > 네이버 로그인 Callback URL (최대 5개)에서 확인이 가능합니다.

 
 

3) application.properties 설정 파일 확인


💡 application.properties 설정 파일 확인

- Spring Boot 크게는 provider, registration로 구분이 되어 있습니다.
- provider의 경우는 OAuth2 인증 제공자에 대한 설정 정보를 포함합니다.
- registration의 경우는 클라이언트 애플리케이션(Spring Boot APP)에 대한 설정을 포함합니다.

 

spring:
  security:
    oauth2:
      client:
        # OAuth2 인증 제공자(네이버)에 대한 설정 정보를 포함합니다.
        provider:
          naver:
            authorization-uri: <https://nid.naver.com/oauth2.0/authorize>
            token-uri: <https://nid.naver.com/oauth2.0/token>
            user-info-uri: <https://openapi.naver.com/v1/nid/me>
            user-name-attribute: id

        # 클라이언트 애플리케이션(Spring Boot)에 대한 설정을 포함합니다.
        registration:
          naver:
            client-id: UyfYudFog8G0pfktnq
            client-secret: VnYHzwP2PN
            redirect-uri: 
            authorization-grant-type: authorization_code
            client-authentication-method: client_secret_post
            client-name: naver
            scope:
              - nickname
              - email
              - profile_image

 
 

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 / POSTOAuth 2.0https://nid.naver.com/oauth2.0/authorizeURL 리다이렉트네이버 로그인 인증 요청
GET / POSTOAuth 2.0https://nid.naver.com/oauth2.0/tokenJSON접근 토큰 발급/갱신/삭제 요청
GETOAuth 2.0https://openapi.naver.com/v1/nid/meJSON네이버 회원 프로필 조회

 

네이버 로그인 API 명세 - LOGIN

네이버 로그인 API 명세 네이버 로그인 API는 네이버 로그인 인증 요청 API, 접근 토큰 발급/갱신/삭제 요청API로 구성되어 있습니다. 네이버 로그인 인증 요청 API는 여러분의 웹 또는 앱에 네이버

developers.naver.com

네이버 회원 프로필 조회 API 명세 - LOGIN

네이버 회원 프로필 조회 API 명세 NAVER Developers - 네이버 로그인 회원 프로필 조회 가이드 네이버 로그인을 통해 인증받은 받고 정보 제공에 동의한 회원에 대해 회원 메일 주소, 별명, 프로필 사

developers.naver.com

 

3. client.registration 구성


3.1. registration.naver.client-id, client-secret 값은 애플리케이션 정보 내에서 값을 확인합니다.


항목설명
registration.naver.client-id네이버 개발자 센터에서 발급받은 애플리케이션의 고유 식별자입니다. OAuth2.0 인증 과정에서 클라이언트를 식별하는 데 사용됩니다.
registration.naver.client-secret네이버 개발자 센터에서 발급받은 애플리케이션의 비밀 키입니다. 클라이언트 인증 과정에서 사용되며, 외부에 노출되지 않도록 주의해야 합니다.

 

3.2. registration.naver.redirect-uri 값은 내 애플리케이션 > API 설정 탭 > 네이버 로그인 Callback URL을 활용합니다.


항목설명
registration.naver.client-id네이버 개발자 센터에서 발급받은 애플리케이션의 고유 식별자입니다. OAuth2.0 인증 과정에서 클라이언트를 식별하는 데 사용됩니다.
registration.naver.client-secret네이버 개발자 센터에서 발급받은 애플리케이션의 비밀 키입니다. 클라이언트 인증 과정에서 사용되며, 외부에 노출되지 않도록 주의해야 합니다.
registration.naver.redirect-uriOAuth2.0 인증 과정이 완료된 후 사용자가 리다이렉트될 URL을 지정합니다

 

 
 
 

3.3. authorization-grant-type 값에 대한 설명


💡authorization-grant-type

- OAuth 2.0 프로토콜에서 클라이언트가 액세스 토큰을 얻기 위해 사용하는 방법을 지정합니다. 일반적으로 다음과 같은 값들이 사용됩니다

 
 
 

Grant Type설명
authorization_code사용자가 인증 후 받은 인증 코드를 이용해 액세스 토큰을 요청하는 방식입니다. 가장 일반적으로 사용되는 방식으로, 웹 애플리케이션에서 주로 사용됩니다.
implicit주로 단일 페이지 애플리케이션(SPA)에서 사용되며, 인증 코드 없이 바로 액세스 토큰을 받는 방식입니다. 보안상의 이유로 최근에는 권장되지 않습니다.
password사용자의 아이디와 비밀번호를 직접 사용하여 액세스 토큰을 얻는 방식입니다. 높은 신뢰도가 요구되는 애플리케이션에서만 사용해야 합니다.
client_credentials클라이언트 자체가 리소스 소유자인 경우 사용됩니다. 주로 서버 간 통신에서 사용됩니다.
refresh_token기존 액세스 토큰이 만료되었을 때, 리프레시 토큰을 사용하여 새로운 액세스 토큰을 얻는 방식입니다.

 

3.4. 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 값은 선택한 사항에 따라 받을 수 있고, 각각 항목의 이름을 아래와 같습니다.


 

Scope설명
name회원이름
email연락처 이메일 주소
nickname별명
profile_image프로필 사진
gender성별
birthday생일
age연령대
birthyear출생연도
mobile휴대전화번호

 
 
 
 
 
 
오늘도 감사합니다😀

반응형