Spotnana 인증 방식 안내

생성자 Ashish Chaudhary, 수정일 토, 4 10월 시간: 1:06 PM : Ashish Chaudhary

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에 직접 연결하는 사용자에게 제공되는 정보(즉, 고유한 clientIdclientSecret)입니다.
  • PID(개인 식별자) 사용자별로 생성되는 개인 식별자입니다. PID를 통해 Spotnana 서버에서 사용자 정보를 조회합니다.
  • orgId Spotnana가 사용자 조직에 부여하는 고유 식별자입니다.
  • tmcId Spotnana가 TMC(여행사)에 부여하는 고유 식별자입니다.


지원되는 인증 방식

Spotnana에서 지원하는 인증 방식은 다음과 같습니다.


비밀번호 기반 인증

비밀번호 기반 인증을 사용하는 경우, Spotnana UI(즉, OBT의 로그인 또는 회원가입 페이지)에서 인증 절차가 시작되어 Spotnana 백엔드 서버와 연동됩니다. 이 방식은 사용자가 기존 계정으로 로그인하는 경우와 새로 회원가입하는 경우에 따라 인증 흐름이 다르게 진행됩니다. 각각의 인증 절차는 아래 섹션에서 순서도와 함께 설명되어 있습니다.


기존 사용자

아래 순서도와 단계별 설명을 통해, Spotnana UI가 백엔드 서비스와 어떻게 연동하여 기존 사용자를 인증하는지 안내합니다.

그림: 기존 사용자를 위한 비밀번호 기반 인증 흐름을 설명하는 순서도입니다.


단계흐름
기존 사용자가 OBT 또는 Spotnana 모바일 앱에서 이메일로 로그인을 시도합니다.
1
  • Spotnana UI가 Spotnana 서버에 사용자의 인증 설정 정보를 요청하는 API를 보냅니다. 이 요청에는 사용자의 로그인 자격 정보가 포함됩니다.
  • 응답에는 사용자의 tmcId, orgIdauthProviderType이 포함되어 있습니다.
2
  • Spotnana UI가 Spotnana IdP에 clientId, 이메일, 비밀번호를 전달하여 API 요청을 보냅니다. Spotnana IdP에서 새로운 bearer 토큰이 생성되어 Spotnana UI로 반환됩니다.
  • 이 단계에서 사용자가 인증됩니다.
3
  • 2단계에서 인증이 완료되면, 이후 모든 API 요청에는 bearer 토큰과 orgId, 그리고 tmcId 가 요청 헤더에 포함되어야 합니다.
  • 모든 API 요청에서 bearer 토큰이 검증되며, 그 결과가 Spotnana UI로 반환됩니다.


신규 사용자

아래 순서도와 단계별 설명을 통해, Spotnana UI가 백엔드 서비스와 어떻게 연동하여 신규 사용자(또는 비밀번호 재설정이 필요한 기존 사용자)를 인증하는지 안내합니다.


그림: 신규 사용자를 위한 비밀번호 기반 인증 흐름을 설명하는 순서도입니다.


단계
흐름
신규 사용자가 Spotnana OBT 로그인 페이지에서 이메일을 입력한 뒤 다음을 클릭합니다.
1
  • Spotnana UI가 Spotnana 서버에 사용자의 인증 설정 정보를 요청하는 API를 보냅니다. 이 요청에는 사용자의 로그인 자격 정보가 포함됩니다.
  • 응답에는 사용자의 tmcId, orgIdauthProviderType이 포함되어 있습니다.
1 a

사용자가 새 비밀번호를 입력한 뒤 다음을 클릭합니다.

2
  • Spotnana UI가 Spotnana IdP에 회원가입 요청을 보냅니다. 이때 clientId, 이메일, 새 비밀번호가 함께 전달됩니다.
  • 정보 등록이 완료되면, 사용자의 이메일로 일회용 비밀번호(OTP)가 발송됩니다.
3
  • 사용자가 Spotnana UI에 OTP를 입력한 뒤 인증을 클릭합니다.
  • Spotnana UI가 Spotnana IdP에 OTP 검증 및 로그인용 bearer 토큰 생성을 요청합니다.
  • bearer 토큰이 생성되어 Spotnana UI로 반환됩니다. 이로써 사용자가 Spotnana 플랫폼에 bearer 토큰으로 접근할 수 있게 인증이 완료됩니다.
4
  • 3단계에서 인증이 완료되면, 이후 모든 API 요청에는 bearer 토큰과 orgId, 그리고 tmcId 가 요청 헤더에 포함되어야 합니다.
  • 모든 API 요청에서 bearer 토큰이 검증되며, 그 결과가 Spotnana UI로 반환됩니다.


IdP 기반 인증

Spotnana는 Google, Azure, 커스텀 IdP 등 OpenID Connect 및 SAML 프로토콜을 이용한 IdP 인증을 지원합니다. 아래 순서도와 단계별 설명을 통해 IdP 기반 인증 흐름을 안내합니다.

그림: IdP 기반 인증 흐름을 설명하는 순서도입니다.


단계흐름
사용자가 OBT 또는 Spotnana 모바일 앱에서 이메일로 로그인을 시도합니다.
1
  • Spotnana UI가 Spotnana 서버에 사용자의 인증 설정 정보를 요청하는 API를 보냅니다. 이 요청에는 사용자의 로그인 자격 정보가 포함됩니다.
  • 응답에는 사용자의 tmcId, orgIdauthProviderType이 포함되어 있습니다.
2

Spotnana UI가 요청을 Spotnana IdP로 리다이렉트합니다.

3

Spotnana IdP가 요청을 파트너의 IdP로 리다이렉트하여, 사용자의 IdP 인증을 시작합니다.

참고: 각 리다이렉트 단계마다 302 상태 코드가 반환되어, 요청이 다른 URL로 이동했음을 나타냅니다.
4

Spotnana IdP와 파트너 IdP 간 연결이 이루어지며, 이를 통해 파트너 IdP에서 사용자가 인증되었는지 확인합니다.

참고: 이 연결 과정에서 Spotnana IdP는 clientIdclientSecret 을 form URL-encoded 데이터로 파트너 IdP에 API 호출로 전달합니다. 만약 IdP 서버가 이 데이터 형식을 처리하지 못할 경우, Spotnana 서버가 프록시 역할을 하여 파트너 IdP가 인식할 수 있는 형식으로 변환해 전달할 수 있습니다.
5

파트너 IdP에서 사용자가 정상적으로 인증됩니다.

참고: 이 단계 이후에도 사용자 프로필은 bearer 토큰 검증을 거쳐야 합니다.
5 a

인증이 완료되면, 파트너 IdP의 응답이 Spotnana IdP로 전달됩니다.

5 b

Spotnana IdP가 사용자 프로필에 대한 고유 코드를 생성하여 Spotnana UI로 전달합니다.

6
  • Spotnana UI가 5(b) 단계에서 받은 코드와 함께 clientID 를 Spotnana IdP에 API로 요청합니다.
  • Spotnana IdP가 새로운 bearer 토큰을 생성하여 Spotnana UI로 전달합니다.
참고: bearer 토큰이 정상적으로 생성되면, 사용자가 인증되어 Spotnana에 접근할 수 있음을 의미합니다.
7
  • 6단계에서 인증이 완료되면, 이후 모든 API 요청에는 bearer 토큰과 orgId, 그리고 tmcId 가 요청 헤더에 포함되어야 합니다.
  • 모든 API 요청에서 bearer 토큰이 검증되며, 그 결과가 Spotnana UI로 반환됩니다.


API 기반 인증

Spotnana API를 이용해 Spotnana 플랫폼과 연동하는 파트너는 인증 엔드포인트를 통해 사용자용 bearer 토큰을 발급받을 수 있습니다. 아래 순서도는 API 기반 인증을 사용하는 파트너의 인증 흐름을 보여줍니다.

그림: API 기반 인증 흐름을 설명하는 순서도입니다.


단계흐름
1

API 사용자가 POST 방식으로 get-auth-token(clientId,clientSecret) Spotnana 서버의 API 엔드포인트에 호출하여 임시 bearer 토큰을 발급받습니다.

아래는 get-auth-token 엔드포인트 호출 시 사용할 수 있는 cURL 예시입니다.

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에서 받은 clientId 와 clientSecret 값으로 바꿔서 사용하셔야 합니다. 
2
  • Spotnana 서버가 Spotnana IdP의 getToken(clientId,clientSecret) 메서드를 호출해 임시 bearerToken 을 생성하고, 다시 Spotnana 서버로 전달합니다.
  • Spotnana 서버는 이 bearer 토큰을 JSON 응답으로 API 사용자에게 전달합니다.


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를 렌더링합니다.
2Spotnana UI가 파트너 UI에 post message로 토큰 요청(type=TOKEN_EXCHANGE_REQUEST)을 보냅니다. type=TOKEN_EXCHANGE_REQUEST가 포함됩니다.
3

파트너 UI가 파트너 서버에 OAuth 토큰 요청을 보내며, 이로써 인증 흐름의 다음 단계가 시작됩니다.

3 a

파트너 서버가 사용자 자격 정보와 subject token을 파라미터로 Spotnana 서버에 요청을 보냅니다. Spotnana 서버는 이 요청이 API/머신 사용자에 의해 보내졌는지 확인합니다.

3 b
  • Spotnana 서버가 파트너 서버에 subject(즉, caller)의 이메일을 요청합니다.
  • 이메일이 조회되어 Spotnana 서버로 전달되며, 이를 통해 사용자를 식별합니다.
3 c
  • 1단계 API 요청에 대한 응답으로 Spotnana 서버가 파트너 서버에 access token과 refresh token을 전달합니다.
  • 이 정보는 다시 파트너 UI로 전달됩니다.
4

파트너 UI가 post message로 Spotnana UI에 토큰(type=TOKEN_EXCHANGE_RESPONSE)을 전달합니다. type=TOKEN_EXCHANGE_RESPONSE.

5
  • Spotnana UI가 Spotnana 서버에 API 요청을 보내 새 bearer 토큰을 발급받습니다.
  • Spotnana 서버에서 bearer 토큰이 생성되어 Spotnana UI로 반환됩니다.
참고: bearer 토큰이 정상적으로 생성되면, 사용자가 인증되어 Spotnana에 접근할 수 있음을 의미합니다.
6
  • 3단계에서 인증이 완료되면, 이후 모든 API 요청에는 bearer 토큰과 orgId, 그리고 tmcId 가 요청 헤더에 포함되어야 합니다.
  • 모든 API 요청에서 bearer 토큰이 검증되며, 그 결과가 Spotnana UI로 반환됩니다.


인증 코드 기반 인증

아래 순서도는 인증 코드를 활용한 인증 흐름이 어떻게 진행되는지 보여줍니다.

그림: 인증 코드 기반 인증 흐름을 설명하는 순서도입니다.


단계흐름
1

파트너 UI가 파트너 서버에 caller의 인증 코드를 요청합니다. 인증 코드가 발급되어 파트너 UI로 전달됩니다.

2

파트너 UI가 custom redirect URL을 사용해 Spotnana UI에 요청을 보내며, 이때 tmcIdauthCode 가 파라미터로 포함됩니다.

3

Spotnana UI가 Spotnana 서버의 POST API를 호출하며, v2/auth/token/companies/<tmcId>(authCode) 엔드포인트를 사용합니다.

3 a
  • Spotnana 서버가 파트너 서버에 인증 코드를 사용해 사용자의 pid 를 조회합니다.
  • 사용자의 pid 가 조회되어 Spotnana 서버로 전달됩니다.
3 b

Spotnana 서버에서 access token과 refresh token을 생성해 Spotnana UI로 전달합니다.

4
  • Spotnana UI가 access token과 refresh token을 사용해 Spotnana 서버에 bearer 토큰 발급을 요청합니다.
  • bearer 토큰이 생성되어 Spotnana UI로 전달됩니다.
참고: bearer 토큰이 정상적으로 생성되면, 사용자가 인증되어 Spotnana에 접근할 수 있음을 의미합니다.
5
  • 4단계에서 인증이 완료되면, 이후 모든 API 요청에는 bearer 토큰과 orgId, 그리고 tmcId 가 요청 헤더에 포함되어야 합니다.
  • 모든 API 요청에서 bearer 토큰이 검증되며, 그 결과가 Spotnana UI로 반환됩니다.


참고: 이 인증 흐름은 TMC 관리자가 여러 사용자가 동일한 이메일로 로그인하도록 허용하는 경우에는 사용할 수 없습니다.


머신-투-머신(M2M) 인증

M2M 인증 방식은 클라이언트 애플리케이션이 외부 콜백 URL에 접근해 사용자를 위한 accessToken 을 생성해야 하는 인증 흐름에 적합합니다. 아래 순서도는 M2M 인증 흐름을 보여줍니다.

그림: M2M 인증 흐름을 설명하는 순서도입니다.


단계흐름
인증에 사용되는 모든 애플리케이션의 공개키가 Spotnana 서버와 Spotnana IdP 간에 동기화됩니다. 이 공개키는 인증 흐름에서 access token을 검증하는 데 사용됩니다.
1

파트너 서버가 Spotnana IdP의 /oauth2/token(clientId,clientSecret) 엔드포인트로 API 요청을 보내 bearer 토큰을 발급받습니다. 새 bearer 토큰은 파트너 서버로 반환됩니다.

2
  • 파트너 서버가 외부 콜백 URL에 API 요청을 보내 사용자를 위한 access token을 발급받습니다.
  • 생성된 access token은 Spotnana 서버로 전달됩니다.
3
  • Spotnana 서버가 앞서 동기화된 공개키로 access token의 서명을 검증합니다. 또한 claim_id 를 검증하여 파트너의 신원을 확인합니다.
  • access token은 이후 파트너 서버로 전달되어 사용자의 인증에 활용됩니다.




아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.