Spotnana 인증 흐름 - 개요
목차
Spotnana는 파트너가 저희 플랫폼과 안전하게 연동할 수 있도록 다양한 인증 방식을 제공합니다. 이 문서에서는 Spotnana에서 현재 지원하는 여러 인증 방식과 각 방식의 절차를 쉽게 이해할 수 있도록 설명합니다. 여기서 소개하는 인증 흐름은 Spotnana가 사용자를 어떻게 인증하고, 회사(조직) 단위의 보호된 리소스(즉, 사용자의 회사가 Spotnana 플랫폼 내에서 소유한 리소스)에 접근 권한을 부여하는지 보여줍니다.
주요 구성 요소
시작하기 전에, 이 문서에서 자주 언급되는 핵심 시스템 구성 요소들의 정의를 먼저 확인해 주세요.
- Spotnana UI(Spotnana 사용자 인터페이스) Spotnana의 프론트엔드 웹 애플리케이션(온라인 예약 툴)이나 모바일 앱을 의미합니다. 특히, 로그인 또는 회원가입 시 사용되는 로그인 페이지를 지칭하며, 이때 프론트엔드 인증 흐름이 시작됩니다.
- Spotnana 서버 Spotnana의 백엔드 서버로, 인증 처리(예: 사용자의 리소스 접근 권한 부여, 사용자 정보 안전 저장 및 처리 등)에 사용됩니다.
- 파트너 UI (파트너 사용자 인터페이스) 파트너가 Spotnana 플랫폼에 접근할 때 사용하는 프론트엔드 애플리케이션을 의미합니다. 예를 들어, iFrame 기반 인증 방식에서는 Spotnana 플랫폼이 파트너 UI에 임베드되어, 파트너의 사용자가 파트너 UI를 통해 Spotnana에 접속하게 됩니다.
- 파트너 서버 Spotnana와 연동을 위해 파트너가 사용하는 하나 이상의 백엔드 서버를 의미합니다.
- Spotnana IdP (Spotnana 아이덴티티 제공자) 사용자 신원 관리 및 권한 부여를 위해 Spotnana 내부에서 사용하는 서비스입니다.
- 파트너 IdP 파트너가 사용하는 외부 아이덴티티 제공자(IdP)를 의미합니다. 대표적으로 Google, Azure 등이 있습니다.
- OBT Spotnana의 온라인 예약 툴(OBT)로, 아래 주소에서 이용하실 수 있습니다. https://app.spotnana.com/
- Subject token iFrame 기반(또는 토큰 교환 방식) 인증에서 subject token은 사용자의 신원을 나타내는 토큰입니다. 이 토큰을 통해 사용자 정보를 조회하고 Spotnana 플랫폼 접근 권한을 부여합니다.
- Access token OAuth 기반의 인증 자격 증명으로, 파트너 애플리케이션이 사용자를 대신해 보호된 리소스에 접근할 수 있게 해줍니다. 이는 임시 인증 키로, 사용자의 로그인 정보를 노출하지 않고도 API 요청을 할 수 있도록 합니다.
- Refresh token 사용자가 다시 로그인하지 않아도 새로운 access token을 발급받을 수 있도록 하는 장기 유효 자격 증명입니다. 보통 첫 로그인 시 access token과 함께 발급됩니다.
- Client credentials Spotnana API에 직접 연결하는 사용자에게 제공되는 정보(즉, 고유한
clientId와clientSecret)입니다. - PID(개인 식별자) 사용자별로 생성되는 개인 식별자입니다. PID를 통해 Spotnana 서버에서 사용자 정보를 조회합니다.
orgIdSpotnana가 사용자 조직에 부여하는 고유 식별자입니다.tmcIdSpotnana가 TMC(여행사)에 부여하는 고유 식별자입니다.
지원되는 인증 방식
Spotnana에서 지원하는 인증 방식은 다음과 같습니다.
비밀번호 기반 인증
비밀번호 기반 인증을 사용하는 경우, Spotnana UI(즉, OBT의 로그인 또는 회원가입 페이지)에서 인증 절차가 시작되어 Spotnana 백엔드 서버와 연동됩니다. 이 방식은 사용자가 기존 계정으로 로그인하는 경우와 새로 회원가입하는 경우에 따라 인증 흐름이 다르게 진행됩니다. 각각의 인증 절차는 아래 섹션에서 순서도와 함께 설명되어 있습니다.
기존 사용자
아래 순서도와 단계별 설명을 통해, Spotnana UI가 백엔드 서비스와 어떻게 연동하여 기존 사용자를 인증하는지 안내합니다.

그림: 기존 사용자를 위한 비밀번호 기반 인증 흐름을 설명하는 순서도입니다.
| 단계 | 흐름 |
|---|---|
| 기존 사용자가 OBT 또는 Spotnana 모바일 앱에서 이메일로 로그인을 시도합니다. | |
| 1 |
|
| 2 |
|
| 3 |
|
신규 사용자
아래 순서도와 단계별 설명을 통해, Spotnana UI가 백엔드 서비스와 어떻게 연동하여 신규 사용자(또는 비밀번호 재설정이 필요한 기존 사용자)를 인증하는지 안내합니다.

그림: 신규 사용자를 위한 비밀번호 기반 인증 흐름을 설명하는 순서도입니다.
단계 | 흐름 |
|---|---|
신규 사용자가 Spotnana OBT 로그인 페이지에서 이메일을 입력한 뒤 다음을 클릭합니다. | |
1 |
|
1 a | 사용자가 새 비밀번호를 입력한 뒤 다음을 클릭합니다. |
2 |
|
| 3 |
|
| 4 |
|
IdP 기반 인증
Spotnana는 Google, Azure, 커스텀 IdP 등 OpenID Connect 및 SAML 프로토콜을 이용한 IdP 인증을 지원합니다. 아래 순서도와 단계별 설명을 통해 IdP 기반 인증 흐름을 안내합니다.

그림: IdP 기반 인증 흐름을 설명하는 순서도입니다.
| 단계 | 흐름 |
|---|---|
| 사용자가 OBT 또는 Spotnana 모바일 앱에서 이메일로 로그인을 시도합니다. | |
| 1 |
|
| 2 | Spotnana UI가 요청을 Spotnana IdP로 리다이렉트합니다. |
| 3 | Spotnana IdP가 요청을 파트너의 IdP로 리다이렉트하여, 사용자의 IdP 인증을 시작합니다. 참고: 각 리다이렉트 단계마다 302 상태 코드가 반환되어, 요청이 다른 URL로 이동했음을 나타냅니다. |
| 4 | Spotnana IdP와 파트너 IdP 간 연결이 이루어지며, 이를 통해 파트너 IdP에서 사용자가 인증되었는지 확인합니다. 참고: 이 연결 과정에서 Spotnana IdP는 |
| 5 | 파트너 IdP에서 사용자가 정상적으로 인증됩니다. 참고: 이 단계 이후에도 사용자 프로필은 bearer 토큰 검증을 거쳐야 합니다. |
| 5 a | 인증이 완료되면, 파트너 IdP의 응답이 Spotnana IdP로 전달됩니다. |
| 5 b | Spotnana IdP가 사용자 프로필에 대한 고유 코드를 생성하여 Spotnana UI로 전달합니다. |
| 6 |
참고: bearer 토큰이 정상적으로 생성되면, 사용자가 인증되어 Spotnana에 접근할 수 있음을 의미합니다. |
| 7 |
|
API 기반 인증
Spotnana API를 이용해 Spotnana 플랫폼과 연동하는 파트너는 인증 엔드포인트를 통해 사용자용 bearer 토큰을 발급받을 수 있습니다. 아래 순서도는 API 기반 인증을 사용하는 파트너의 인증 흐름을 보여줍니다.

그림: API 기반 인증 흐름을 설명하는 순서도입니다.
| 단계 | 흐름 |
|---|---|
| 1 | API 사용자가 POST 방식으로 아래는 curl -i -X POST \
https://api.spotnana.com/get-auth-token \
-H 'Content-Type: application/json' \
-d '{
"clientId": "sample-apiuser@tmcorg.com",
"clientSecret": "<password>"
}'참고: Spotnana에서 받은 |
| 2 |
|
API 사용자가 bearer 토큰을 받으면, 이후 Spotnana API(예: Trip API) 호출 시 반드시 헤더에 bearer 토큰을 포함시켜야 합니다.
참고: get-auth-token(clientId, clientSecret) 엔드포인트는 5분당 100회 호출 제한이 있습니다. endpoint has a rate limit of 100 API calls per 5 minutes.iFrame 기반 인증
iFrame 또는 임베디드 솔루션이란, 파트너가 Spotnana UI를 파트너 UI에 임베드하여, 사용자가 파트너 UI를 통해 Spotnana에 접근하는 방식을 의미합니다. 이 경우, 파트너와 Spotnana 시스템 간 토큰 교환을 기반으로 사용자 인증이 이루어집니다.
참고: iFrame 기반 인증에서는 로그인하는 사용자를 caller라고 부릅니다. 이는 API/머신 사용자가 다른 사용자를 대신해 액세스 토큰을 요청하는 시나리오 등 다양한 상황을 포괄하기 위함입니다. 예를 들어, TMC(여행사) 관리자가 자신의 자격 증명으로 Spotnana 서버에 직접 연결하는 경우도 포함됩니다. 따라서, 여기서는 caller 라는 용어를 사용하며, 이는 자신의 프로필로 로그인하는 사용자 또는 API/머신 사용자가 다른 사용자를 위해 액세스 토큰을 요청하는 경우 모두를 의미합니다.
아래 순서도는 Spotnana와 파트너 서버 간 토큰 교환을 통해 인증 흐름이 어떻게 진행되는지 보여줍니다.
그림: 토큰 교환을 활용한 iFrame 기반 인증 흐름을 설명하는 순서도입니다.
| 단계 | 흐름 |
|---|---|
caller가 파트너 UI를 통해 로그인합니다. | |
| 1 | 파트너 UI가 iFrame을 통해 Spotnana UI를 렌더링합니다. |
| 2 | Spotnana UI가 파트너 UI에 post message로 토큰 요청(type=TOKEN_EXCHANGE_REQUEST)을 보냅니다. type=TOKEN_EXCHANGE_REQUEST가 포함됩니다. |
| 3 | 파트너 UI가 파트너 서버에 OAuth 토큰 요청을 보내며, 이로써 인증 흐름의 다음 단계가 시작됩니다. |
| 3 a | 파트너 서버가 사용자 자격 정보와 subject token을 파라미터로 Spotnana 서버에 요청을 보냅니다. Spotnana 서버는 이 요청이 API/머신 사용자에 의해 보내졌는지 확인합니다. |
| 3 b |
|
| 3 c |
|
| 4 | 파트너 UI가 post message로 Spotnana UI에 토큰(type=TOKEN_EXCHANGE_RESPONSE)을 전달합니다. |
| 5 |
참고: bearer 토큰이 정상적으로 생성되면, 사용자가 인증되어 Spotnana에 접근할 수 있음을 의미합니다. |
| 6 |
|
인증 코드 기반 인증
아래 순서도는 인증 코드를 활용한 인증 흐름이 어떻게 진행되는지 보여줍니다.

그림: 인증 코드 기반 인증 흐름을 설명하는 순서도입니다.
| 단계 | 흐름 |
|---|---|
| 1 | 파트너 UI가 파트너 서버에 caller의 인증 코드를 요청합니다. 인증 코드가 발급되어 파트너 UI로 전달됩니다. |
| 2 | 파트너 UI가 custom redirect URL을 사용해 Spotnana UI에 요청을 보내며, 이때 |
| 3 | Spotnana UI가 Spotnana 서버의 POST API를 호출하며, |
| 3 a |
|
| 3 b | Spotnana 서버에서 access token과 refresh token을 생성해 Spotnana UI로 전달합니다. |
| 4 |
참고: bearer 토큰이 정상적으로 생성되면, 사용자가 인증되어 Spotnana에 접근할 수 있음을 의미합니다. |
| 5 |
|
참고: 이 인증 흐름은 TMC 관리자가 여러 사용자가 동일한 이메일로 로그인하도록 허용하는 경우에는 사용할 수 없습니다.
머신-투-머신(M2M) 인증
M2M 인증 방식은 클라이언트 애플리케이션이 외부 콜백 URL에 접근해 사용자를 위한 accessToken 을 생성해야 하는 인증 흐름에 적합합니다. 아래 순서도는 M2M 인증 흐름을 보여줍니다.

그림: M2M 인증 흐름을 설명하는 순서도입니다.
| 단계 | 흐름 |
|---|---|
인증에 사용되는 모든 애플리케이션의 공개키가 Spotnana 서버와 Spotnana IdP 간에 동기화됩니다. 이 공개키는 인증 흐름에서 access token을 검증하는 데 사용됩니다. | |
| 1 | 파트너 서버가 Spotnana IdP의 |
| 2 |
|
| 3 |
|
아티클이 유용했나요?
훌륭합니다!
피드백을 제공해 주셔서 감사합니다.
도움이 되지 못해 죄송합니다!
피드백을 제공해 주셔서 감사합니다.
피드백 전송
소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.