계정 비밀번호 API
참고: 이 문서에 설명된 모든 API는
dta-wir-medi-api애플리케이션에 구현되어 있습니다. (Go)
논의 사항
- PATCH accounts/password/reset: dta-wi-medi-api에 구현되어 있음 (reqeust 다름)
- accounts/password/reset/security: dta-wi-medi-api에 구현되어 있음 (request 다름)
dta-wi-medi-api 에 있는 로직으로 통일시킬 것인지?
개요
계정 비밀번호 API는 MD(의료진) 계정의 비밀번호 관리 기능을 제공합니다.
[클라이언트 수정 필요]
API 경로에 /auth 경로가 추가됩니다.
경로 변경:
- asis:
/v1/accounts/password/~ - tobe:
/v1/auth/accounts/password/~
주요기능
- 보안 코드 발송: 비밀번호 재설정을 위한 보안 코드 이메일 발송
- 보안 코드 검증: 발송된 보안 코드 검증 및 토큰 발급
- 보안 코드를 통한 비밀번호 재설정: 검증된 토큰으로 비밀번호 재설정
- 비밀번호 재설정 (관리자용): 발급받은 토큰을 사용하여 새로운 비밀번호로 변경
[POST] /v1/accounts/password/reset/security-code/send - 보안 코드 발송
보안 코드 발송
비밀번호 재설정을 위한 보안 코드를 이메일로 발송합니다.
[클라이언트 수정 필요]
asis:/v1/accounts/password/reset/security-code/send
tobe:/v1/auth/accounts/password/reset/security-code/send
- HTTP Method:
POST - 인증: 액세스 토큰 필요 없음
Headers
| Header | Type | Description | Required |
|---|---|---|---|
| Content-Type | application/json | 요청 본문 형식 | ✔ |
Request Body
| 필드 | 타입 | 설명 | Required |
|---|---|---|---|
| string | MD 이메일 | ✔ |
Request Body 예시
{
"email": "doctor@weltcorp.com"
}
Responses
| Http Status Code | 설명 | Error Code(s) |
|---|---|---|
200 OK | 보안 코드 발송 성공 | - |
400 Bad Request | 잘못된 요청 | BAD_REQUEST (40000) |
500 Internal Server Error | 서버 내부 오류 | INTERNAL_SERVER_ERROR (50000) |
200 OK - 성공
{
"success": true
}
| 필드 | 타입 | 설명 |
|---|---|---|
| success | boolean | 성공 여부 (true) |
400 Bad Request - 잘못된 요청
{
"status": 400,
"code": 40000,
"message": "유효하지 않은 계정 정보입니다."
}
이메일에 해당하는 계정이 존재하지 않을 때 발생합니다.
500 Internal Server Error - 서버 내부 오류
{
"status": 500,
"code": 50000,
"message": "INTERNAL_SERVER_ERROR"
}
[POST] /v1/accounts/password/reset/security-code/verify - 보안 코드 검증
보안 코드 검증
발송된 보안 코드를 검증하고, 검증 성공 시 비밀번호 재설정에 사용할 수 있는 토큰을 발급합니다.
[클라이언트 수정 필요]
asis:/v1/accounts/password/reset/security-code/verify
tobe:/v1/auth/accounts/password/reset/security-code/verify
- HTTP Method:
POST - 인증: 액세스 토큰 필요 없음
Headers
| Header | Type | Description | Required |
|---|---|---|---|
| Content-Type | application/json | 요청 본문 형식 | ✔ |
Request Body
| 필드 | 타입 | 설명 | Required |
|---|---|---|---|
| string | MD 이메일 | ✔ | |
| securityCode | string | 보안 코드 | ✔ |
Request Body 예시
{
"email": "doctor@weltcorp.com",
"securityCode": "123456"
}
Responses
| Http Status Code | 설명 | Error Code(s) |
|---|---|---|
200 OK | 보안 코드 검증 성공 | - |
400 Bad Request | 잘못된 보안 코드 | BAD_REQUEST (40000) |
500 Internal Server Error | 서버 내부 오류 | INTERNAL_SERVER_ERROR (50000) |
200 OK - 성공
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
| 필드 | 타입 | 설명 |
|---|---|---|
| token | string | 비밀번호 재설정에 사용할 일회용 토큰 (30분 유효) |
400 Bad Request - 잘못된 보안 코드
{
"status": 400,
"code": 40000,
"message": "유효하지 않은 정보입니다."
}
발생 가능한 경우:
- 보안 코드가 유효하지 않거나 만료된 경우
- 이메일과 보안 코드가 일치하지 않는 경우
- 해당 계정이 존재하지 않는 경우
500 Internal Server Error - 서버 내부 오류
{
"status": 500,
"code": 50000,
"message": "INTERNAL_SERVER_ERROR"
}
[POST] /v1/accounts/password/reset/security-code - 보안 코드를 통한 비밀번호 재설정
보안 코드를 통한 비밀번호 재설정
보안 코드 검증 후 발급받은 토큰을 사용하여 비밀번호를 재설정합니다.
[클라이언트 수정 필요]
asis:/v1/accounts/password/reset/security-code
tobe:/v1/auth/accounts/password/reset/security-code
- HTTP Method:
POST - 인증: 보안 코드 검증 시 발급받은 토큰 필요
Headers
| Header | Type | Description | Required |
|---|---|---|---|
| Content-Type | application/json | 요청 본문 형식 | ✔ |
Request Body
| 필드 | 타입 | 설명 | Required |
|---|---|---|---|
| newPassword | string | 새 비밀번호 | ✔ |
| token | string | 보안 코드 검증 시 발급받은 토큰 | ✔ |
Request Body 예시
{
"newPassword": "newPassword123!",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
Responses
| Http Status Code | 설명 | Error Code(s) |
|---|---|---|
200 OK | 비밀번호 재설정 성공 | - |
400 Bad Request | 잘못된 요청 또는 토큰 만료 | BAD_REQUEST (40000) |
401 Unauthorized | 인증 실패 (유효하지 않은 토큰) | UNAUTHORIZED (40100), TOKEN_EXPIRED (40101), INVALID_TOKEN (40102) |
500 Internal Server Error | 서버 내부 오류 | INTERNAL_SERVER_ERROR (50000) |
200 OK - 성공
{
"success": true
}
| 필드 | 타입 | 설명 |
|---|---|---|
| success | boolean | 성공 여부 (true) |
400 Bad Request - 잘못된 요청
{
"status": 400,
"code": 40000,
"message": "비밀번호는 10~20자리여야 합니다."
}
발생 가능한 에러 메시지:
"비밀번호는 10~20자리여야 합니다."- 비밀번호 길이 규칙 위반"비밀번호는 숫자/문자/특수문자 중 2가지 이상을 포함해야 합니다."- 비밀번호 복잡도 규칙 위반"기존 비밀번호와 동일합니다."- 새 비밀번호가 기존 비밀번호와 동일"유효하지 않은 계정 정보입니다."- 토큰의 계정 정보가 유효하지 않음
401 Unauthorized - 인증 실패
토큰 만료:
{
"status": 401,
"code": 40101,
"message": "TOKEN_EXPIRED"
}
토큰이 만료되었을 때 발생합니다. (토큰 유효기간: 30분)
유효하지 않은 토큰:
{
"status": 401,
"code": 40102,
"message": "INVALID_TOKEN"
}
토큰 형식이 올바르지 않거나 위조된 토큰일 때 발생합니다.
일반 인증 실패:
{
"status": 401,
"code": 40100,
"message": "UNAUTHORIZED"
}
500 Internal Server Error - 서버 내부 오류
{
"status": 500,
"code": 50000,
"message": "INTERNAL_SERVER_ERROR"
}
[POST] /v1/accounts/password/reset - 비밀번호 재설정 (관리자용)
비밀번호 재설정 (관리자용)
참고: 이 API는
dta-wi-mono모노레포의dta-wi-medi-api애플리케이션에 구현되어 있습니다.
발급받은 토큰을 사용하여 계정의 비밀번호를 새로운 비밀번호로 변경합니다.
[클라이언트 수정 필요]
asis:PATCH /v1/accounts/password/reset
tobe:POST /v1/accounts/password/reset
- HTTP Method:
POST - 인증: 액세스 토큰 (
accessToken) 필요
Headers
| Header | Type | Description | Required |
|---|---|---|---|
| Authorization | Bearer {accessToken} | 사용자 인증을 통해 발급받은 액세스 토큰 입니다. | ✔ |
| Content-Type | application/json | 요청 본문 형식 | ✔ |
Request Body
| 필드 | 타입 | 설명 | Required |
|---|---|---|---|
| token | string | 비밀번호 재설정 토큰 | ✔ |
| newPassword | string | 새로운 비밀번호 | ✔ |
Request Body 예시
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"newPassword": "newpassword123"
}
Responses
| Http Status Code | 설명 | Error Code(s) |
|---|---|---|
200 OK | 재설정 성공 | - |
401 Unauthorized | 인증 실패 | 1080 |
500 Internal Server Error | 서버 내부 오류 | 1092 |
200 OK - 성공
{
"success": true
}
| 필드 | 타입 | 설명 |
|---|---|---|
| success | boolean | 비밀번호 재설정 성공 여부 |
401 Unauthorized - 인증 실패
{
"status": 401,
"code": 1080,
"message": "UNAUTHORIZED",
"detail": "{\"displayText\":\"No token found in Authorization header\"}"
}