DOCS/ideas/250911_naver_oauth2_integration_guide.md
happybell80 95ac1a2308 파일명 날짜 추가 - ideas 폴더
- UTC_aware_datetime_handling_strategy.md → 250828_UTC_aware_datetime_handling_strategy.md
- auth_system_analysis.md → 250810_auth_system_analysis.md (추정)
- naver_oauth2_integration_guide.md → 250911_naver_oauth2_integration_guide.md
- rb10508_to_rb8001_migration_guide.md → 250828_rb10508_to_rb8001_migration_guide.md
2025-09-11 21:42:41 +09:00

133 lines
3.0 KiB
Markdown

# 네이버 OAuth2 연동 구현 가이드
## 작성일: 2025-09-11
## 목적: 네이버 로그인 API 연동 절차 정리
---
## 1. 사전 준비
### 애플리케이션 등록
- 네이버 개발자 센터에서 앱 등록
- Client ID, Client Secret 발급
- 콜백 URL 정확히 등록 (URL 인코딩 필수)
- API 권한 관리에서 필요 항목 활성화 (미설정 시 403 오류)
---
## 2. OAuth2 흐름
### Step 1: 사용자 인증 (Authorization Code)
```
GET https://nid.naver.com/oauth2.0/authorize
?response_type=code
&client_id={CLIENT_ID}
&redirect_uri={URL_ENCODED_CALLBACK}
&state={RANDOM_STATE}
```
**주요 파라미터:**
- `response_type`: 항상 "code"
- `state`: CSRF 방어용 난수 (세션 저장 후 검증 필수)
- `redirect_uri`: 등록된 콜백과 정확히 일치
### Step 2: 토큰 교환
```
GET/POST https://nid.naver.com/oauth2.0/token
?grant_type=authorization_code
&client_id={CLIENT_ID}
&client_secret={CLIENT_SECRET}
&code={AUTHORIZATION_CODE}
&state={STATE}
```
**응답 데이터:**
```json
{
"access_token": "AAAAOLtM...",
"refresh_token": "c8ceMEJi...",
"token_type": "bearer",
"expires_in": 3600
}
```
### Step 3: 사용자 프로필 조회
```
GET https://openapi.naver.com/v1/nid/me
Headers: Authorization: Bearer {ACCESS_TOKEN}
```
**응답 구조:**
```json
{
"resultcode": "00",
"message": "success",
"response": {
"id": "32742776", // 앱별 고유 식별자
"email": "user@naver.com",
"name": "홍길동",
"nickname": "닉네임"
}
}
```
---
## 3. 토큰 관리
### 토큰 갱신
```
GET https://nid.naver.com/oauth2.0/token
?grant_type=refresh_token
&client_id={CLIENT_ID}
&client_secret={CLIENT_SECRET}
&refresh_token={REFRESH_TOKEN}
```
### 연동 해제
```
GET https://nid.naver.com/oauth2.0/token
?grant_type=delete
&client_id={CLIENT_ID}
&client_secret={CLIENT_SECRET}
&access_token={ACCESS_TOKEN}
&service_provider=NAVER
```
---
## 4. 구현 체크리스트
- [ ] 네이버 개발자 센터 앱 등록
- [ ] Client ID/Secret 환경변수 설정
- [ ] 콜백 URL 등록 및 인코딩 처리
- [ ] State 파라미터 생성/검증 로직
- [ ] Authorization 엔드포인트 리다이렉트
- [ ] 콜백 처리 및 code 교환
- [ ] Access Token으로 프로필 조회
- [ ] Refresh Token 갱신 로직
- [ ] 연동 해제 기능
---
## 5. 주의사항
1. **state 필수**: CSRF 공격 방어, 세션 저장 후 검증
2. **redirect_uri**: URL 인코딩 필수, 등록값과 정확히 일치
3. **권한 설정**: 개발자 센터에서 API 권한 미리 활성화
4. **토큰 타입**: Bearer 토큰 형식 준수
5. **에러 처리**: error, error_description 파라미터 확인
---
## 6. 에러 코드
| 코드 | 설명 | 해결방법 |
|-----|------|---------|
| 403 | 권한 없음 | API 권한 관리에서 활성화 |
| 401 | 인증 실패 | 토큰 만료 확인, 갱신 필요 |
| 024 | 잘못된 인증 | state 불일치, CSRF 체크 |
---
**참고**: 네이버는 외부 로그아웃 API 미제공, scope 파라미터 불필요 (동의 화면에서 처리)