Main API
AI 토큰 API
AI 서비스용 토큰 갱신 API
AI 토큰 API
AI 포트폴리오 서비스용 Access Token 갱신 API입니다.
Base URL: /ai/auth
인증 정보
| 항목 | 값 |
|---|---|
| 인증 필요 | Refresh Token |
| 인증 방식 | JWT Bearer Token |
엔드포인트 목록
| 메서드 | 경로 | 설명 | 인증 |
|---|---|---|---|
POST | /ai/auth/refreshToken | Access Token 재발급 | Refresh Token |
GET | /ai/auth/check-authority | 권한 확인 | 필요 |
API 상세
Access Token 재발급
401 토큰 만료 에러 발생 시 Access Token 및 Refresh Token을 재발급합니다.
Authorization 헤더에 Refresh Token을 전달해야 합니다.
HTTP 요청
POST /ai/auth/refreshToken
Authorization: Bearer \{refresh_token\}요청 헤더
| 헤더 | 필수 | 설명 |
|---|---|---|
Authorization | 예 | Bearer {refresh_token} 형식 |
응답
성공 응답 (200 OK)
{
"id": "user_id",
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"isNewUser": false
}Response 스키마 (TokenDto)
| 필드명 | 타입 | 설명 |
|---|---|---|
id | string | 사용자 ID |
accessToken | string | 새로 발급된 Access Token |
refreshToken | string | 새로 발급된 Refresh Token |
isNewUser | boolean | 신규 사용자 여부 |
에러 응답 (401 Unauthorized)
토큰 갱신 실패 시 다음 형식으로 에러가 반환됩니다:
{
"status": 401,
"code": "ERROR_CODE",
"message": "에러 메시지",
"data": null
}에러 코드
| 에러 코드 | 설명 | 프론트엔드 처리 |
|---|---|---|
TOKEN_INVALID | 토큰 서명이 유효하지 않음 (위조되었거나 손상됨) | 로그인 페이지로 이동 |
REFRESH_TOKEN_EXPIRED | Redis에 저장된 토큰이 없거나 불일치 (세션 만료) | "세션이 만료되었습니다" 메시지 표시 후 로그인 페이지로 이동 |
중요: 에러 발생 시 code 필드를 확인하여 적절한 처리를 해야 합니다. 무한 로딩을 방지하려면 401 에러 시 반드시 로그아웃 처리가 필요합니다.
권한 확인
현재 인증된 사용자의 권한을 확인합니다.
HTTP 요청
GET /ai/auth/check-authority
Authorization: Bearer \{access_token\}응답
성공 응답 (200 OK)
Authorities checked in logs!토큰 저장소
| 플랫폼 | Redis Key 형식 |
|---|---|
| 웹 (Web) | {userId}:web |
| 앱 (App) | {userId}:app |
웹과 앱은 별도의 Refresh Token을 사용합니다.
토큰 만료 정책
| 토큰 유형 | 만료 시간 | 설명 |
|---|---|---|
| Access Token | 14일 | API 요청 인증용 |
| Refresh Token (JWT) | 21일 | 토큰 갱신용 |
| Refresh Token (Redis TTL) | 30일 | 서버 측 세션 유지 |
Grace Period (유예 기간): JWT Refresh Token이 만료되더라도 Redis에 토큰이 남아있으면 (최대 9일간) 토큰 갱신이 가능합니다. 이를 통해 사용자가 앱을 21일 이후에 열어도 30일 이내라면 재로그인 없이 계속 사용할 수 있습니다.