개요
인증 흐름의 목적은 사용자를 식별하고 결제 통합업체 (통합업체)에 인증하는 것입니다.
인증은 다른 방법에 대한 입력입니다. 특히 associateAccount
및 capture
의 경우입니다. 즉, 인증 증명이 이 두 가지 방법에 대한 입력 (매개변수)으로 사용됩니다.
Google은 독립형 모드에서 인증 흐름을 사용하여 사용자를 확인할 수도 있습니다. 이 경우 다른 흐름에 대한 입력으로 사용되지 않으며, 사용자가 이 ID를 인증할 수 있는지 확인하기 위한 용도로만 사용됩니다.
온보딩 시 Google은 판매자와 협의하여 제품에 가장 적합한 인증 메커니즘을 선택합니다.
절차의 작동 방식
사용자를 인증하는 방법에는 두 가지가 있으며 각각 자체 흐름이 있습니다. 통합 시점에 어떤 방법을 사용할지 결정해야 합니다.
- 리디렉션 인증
- SMS-MT OTP 인증
리디렉션 인증
인증이 필요한 Google 사용자는 신원 확인을 위해 통합업체의 앱 또는 웹사이트로 리디렉션될 수 있습니다. 다음은 이 흐름의 단계에 대한 간략한 개요입니다.
- Google이 사용자를 인증할 수 있는 통합업체의 웹 또는 Android 앱으로 리디렉션합니다.
- 인증을 위해
AuthenticationRequest
의 인증requestId
이 인증 증명으로 사용됩니다. - 그러면
AuthenticationResponse
이라는 서명된 응답이 생성됩니다. - 그런 다음 앱 또는 웹사이트에서 사용자를 다시 Google로 리디렉션합니다.
리디렉션 인증은 웹 애플리케이션의 URL로 인코딩된 매개변수가 있는 HTTP GET 메서드를 사용합니다. Android 애플리케이션 인증에 Android 인텐트를 사용합니다. 인코딩에 관한 자세한 내용은 웹 인증을, Android 인텐트 매개변수에 관해서는 Android 인증을 참고하세요.
이러한 각 인증 메커니즘의 결과는 AuthenticationResponse
이라는 서명된 응답입니다. 이 인텐트에는 인증 성공을 전달하기 위해 암호화되고 인코딩된 Google 표준 결제 인증 응답 (gspAuthenticationResponse
)이 포함되어야 합니다. 독립형 모드에서 사용하는 경우 인증이 성공했는지 확인하는 데 gspResult
및 서명이 사용됩니다.
다음 시퀀스 다이어그램은 사용자의 브라우저, Google, 통합업체의 웹 애플리케이션 간의 상호작용을 보여줍니다.
리디렉션-웹 인증 흐름
객체의 목록과 각 객체가 나타내는 항목은 다음과 같습니다.
- 사용자: Google 계정에 결제 수단을 추가하려는 사용자입니다.
- Google UI: 이 경우 고객이 결제 수단 설정을 시작하는 Google 웹 인터페이스입니다.
- Google 서버: 기타 인증 작업과 함께 인증 검사를 수행하는 Google의 백엔드 서버입니다.
- 결제 통합업체 웹: 사용자가 계정을 보유한 통합업체의 웹사이트입니다.
이 인증 흐름에서는 이미 사용자가 Google 웹사이트 (Google UI)에 있고 결제 수단을 추가하려고 한다고 가정합니다. 모든 것이 여기에서 시작됩니다.
- Google UI가 인증 URL을 만들어 Google 서버 (백엔드)로 전송합니다. 이것이 인증 프로세스를 트리거하는 것입니다.
- Google 서버에서 인증 요청 (
AuthenticationRequest
)을 만듭니다. - Google UI로 전송된 인증 요청입니다.
- 사용자에게 통합업체를 통해 ID를 인증해야 한다는 메시지가 표시됩니다.
- 사용자가 인증을 원한다고 응답하면 해당 메시지가 통합업체의 웹사이트로 전송됩니다.
- 결제 통합업체의 웹사이트에서 사용자 신원 확인을 요청합니다.
- 사용자가 신원을 증명하며 결제 통합업체의 웹사이트로 전송됩니다.
- 통합자는 제공된 증거 (메시지에서 인코딩된
authenticationResponse
사용)에 대한 응답 (authenticationResponse
)을 생성합니다. - 이 응답 URL은 사용자에게 전송됩니다.
- 응답 URL은 즉시 사용자로부터 Google UI로 전송됩니다.
- Google UI가 Google 서버에 응답을 보냅니다.
- Google 서버에서는 응답이 확인된 것으로 해석합니다.
다음 시퀀스 다이어그램은 사용자의 휴대전화, Google, 통합업체의 Android 애플리케이션 간의 상호작용을 보여줍니다.
리디렉션 Android 앱 인증 흐름
객체와 각 객체가 나타내는 항목은 다음과 같습니다.
- 사용자: Google 계정에 결제 수단을 추가하려는 사용자입니다.
- Google UI: 고객이 결제 수단 설정을 시작하는 앱 인터페이스입니다.
- Google 서버: 기타 인증 작업과 함께 인증 검사를 수행하는 Google의 백엔드 서버입니다.
- 결제 통합업체 APK: 사용자가 통합업체 계정에 액세스할 수 있는 통합업체의 앱입니다.
- 결제 통합업체 서버: 사용자 정보가 저장되는 통합업체의 백엔드 서버입니다.
이는 인증 흐름이므로 이미 사용자가 앱 (Google UI)을 사용하고 있으며 결제 수단을 추가하려고 한다고 가정합니다. 여기서 초기화가 시작됩니다.
- Google UI에서 인증 호출을 만들어 Google 서버 (백엔드)로 보냅니다.
- Google 서버에서 인증 요청 (
AuthenticationRequest
)을 만듭니다. - Google 서버가 Google UI (앱)에 통화 APK를 보내 인증을 요청합니다.
- Google UI는 사용자 정보를 결제 통합업체 APK (
AUTHENTICATE_V1(authReq)
)에 전송합니다. - 결제 통합업체 APK가 결제 통합업체의 서버에 요청 (
authReq
)을 전송합니다. - 결제 통합업체 서버가 결제 통합업체 APK에 챌린지를 다시 보냅니다.
- 결제 통합업체 APK가 사용자에게 챌린지를 다시 보냅니다.
- 사용자가 신원 증명을 제공하여 결제 통합업체 APK로 전송됩니다.
- 이 증명은 결제 통합업체 서버로 전송됩니다.
- 서버가 서명된
authenticationResponse
를 만듭니다. - 인증 응답이 성공하고
authResp
메시지가 결제 통합업체 APK로 전송됩니다. - 성공 메시지 (
authResp
)는 결제 통합업체 APK에서 Google UI로 전송됩니다. - Google UI가 Google 서버로 응답을 전송합니다.
- Google 서버는 성공 응답을 해석합니다.
SMS-MT OTP 인증
또 다른 인증 방법으로는 단문 메시지 서비스, 모바일 종료, 일회용 비밀번호 (SMS-MT OTP)가 있습니다. 이 메커니즘은 사용자의 전화번호를 활용하여 인증에 사용할 일회용 비밀번호를 전송합니다. Google은 통합업체에 사용자의 전화번호로 OTP를 전송하도록 요청하고 사용자가 OTP를 수신하여 Google 인터페이스에 입력하면 사용자를 인증합니다.
계정 만들기 절차는 다음과 같습니다.
- Google의 사용자 인터페이스 (UI)에 통합업체에 이미 등록된 전화번호를 입력하라는 메시지가 표시됩니다.
- 사용자가 Google UI에 전화번호를 입력합니다.
- Google은 통합업체 (
sendOtp
메서드 호출)를 트리거하여 사용자에게 일회용 비밀번호 (OTP)를 전송합니다. - 사용자가 OTP가 포함된 SMS 메시지를 수신합니다.
- 그런 다음 사용자는 받은 OTP (
capture
,associateAccount
,verifyOtp
의 입력으로 사용됨)를 Google 인터페이스에 입력하여 사용자를 인증합니다. 이는 인증을 증명하는 것입니다.
독립형 모드에서는 OTP 값을 확인하기 위해 verifyOtp
메서드만 호출됩니다.
다음 시퀀스 다이어그램은 OTP를 보낼 때 사용자 휴대전화, Google, 통합업체 간의 상호작용을 보여줍니다.
전화 (OTP 전송) 인증 흐름
다음은 다이어그램에 포함된 객체 목록과 각 객체가 나타내는 의미입니다.
- 사용자: Google 계정에 결제 수단을 추가하려는 사용자입니다.
- Google UI: 이 경우 고객이 결제 수단을 설정하기 시작하는 Google 웹사이트 또는 전화 앱입니다. 참고: Google UI가 전화 앱인 경우 휴대전화가 이미 사용자의 전화번호를 알고 있으므로 처음 몇 단계는 건너뜁니다.
- Google 서버: 기타 인증 작업과 함께 인증 검사를 수행하는 Google의 백엔드 서버입니다.
- 결제 통합업체 서버: 사용자 정보가 저장되는 통합업체의 백엔드 서버입니다.
OTP 인증 흐름이므로 이미 사용자가 Google 전화 앱 또는 웹사이트 (Google UI)에서 결제 수단을 추가하려고 한다고 가정합니다. 여기서 초기화가 시작됩니다.
- Google UI (전화 또는 웹사이트)에서 사용자에게 전화번호를 묻습니다.
- 사용자가 Google UI에 전화번호를 입력합니다.
- Google UI는 번호 (
sendChallenge(phoneNum)
)를 Google 서버로 전송합니다. - Google 서버가 결제 통합업체 서버 (
SendOtp(phoneNum)
)에 일회용 비밀번호를 전송하라는 요청을 보냅니다. - 결제 통합업체 서버가 사용자에게 일회용 비밀번호 (OTP)를 전송합니다.
- 결제 통합업체 서버는 5번에서 Google의 요청에 OTP가 성공적으로 전송되었음을 알립니다.
- 사용자가 이 OTP를 Google UI (전화 또는 웹사이트)에 입력합니다.
- Google UI는 OTP를 Google 서버로 전송하며, 최종적으로 확인을 위해 결제 통합업체에 OTP를 전송합니다. 이를 통해 사용자의 신원을 확인하고 사용자를 인증합니다.
인증 및 재인증
인증이 발생할 수 있는 시점은 다음 두 가지입니다.
- 초기 인증—사용자를 식별하고 인증하는 데 사용됩니다. 초기 인증이
associateAccount
메서드에 대한 입력으로 사용됩니다. - 재인증: 독립형 또는
capture
에 대한 입력과 같은 다른 모든 컨텍스트에서 사용됩니다.
재인증은 초기 인증과 다릅니다. 사용자를 재식별할 필요 없이 단순히 재인증하기 위함입니다. 재인증은 Google에서 사용자에게 특정 계정을 소유하고 있음을 증명하는 데 사용되며 이는 Google의 재량에 따라 이루어집니다.
이 프로세스에서는 associationId
라는 참조가 (연결 흐름에서) 원래 연결에 제공됩니다. 연결 흐름 중에 associateAccount
메서드 호출을 통해 제공됩니다. associationId
는 챌린지할 계정을 식별합니다. 보안을 위해 사용자는 로그인 질문이 표시되는 계정을 변경할 수 없어야 합니다.
SMS-MT OTP 재인증을 위해 Google에서는 sendOtp
에 처음 통화할 때 제공받은 전화번호를 고정 번호로 보관합니다. 보안을 위해 다시 변경할 수 없습니다.
다음은 Google에서 구매하기 전에 본인 확인 요청 (재인증)을 하기로 하는 흐름의 예입니다.
재인증 흐름
객체 목록과 객체가 나타내는 내용은 다음과 같습니다.
- 사용자: 구매하려는 사용자입니다.
- Google UI: 이 경우 고객이 구매를 시작하는 Google 웹사이트 또는 전화 앱입니다.
- 결제 통합업체 UI: 사용자가 통합업체를 통해 계정 정보에 액세스할 수 있는 고객 대상 웹사이트 또는 앱입니다.
- Google 서버: 다른 작업과 함께 재인증 검사를 수행하는 Google의 백엔드 서버입니다.
- 결제 통합업체 서버: 사용자 정보가 저장되는 통합업체의 백엔드 서버입니다.
재인증 흐름은 고객이 구매를 시작하면 시작됩니다. 이렇게 하면 사용자를 다시 인증하는 흐름이 초기화됩니다.
- 사용자가 상품 또는 서비스를 구매하기로 결정합니다.
- 요청은 Google UI에서 Google 서버로 전송됩니다.
- Google 서버가 Google UI에 인증 요청 (
authenticationRequest
)을 다시 전송합니다. - Google UI는 결제 통합업체 UI에 사용자 인증 (
associationId
,authenticationRequest
) 요청을 보냅니다. - 결제 통합업체 UI가 신원을 확인하기 위해 사용자 (
LookupIdentity
(associationId
))를 조회합니다. - 결제 통합업체 UI가 사용자에게 UI (통합업체의 웹사이트 또는 앱)에서 사용자 인증 정보를 요청하는 메시지를 표시합니다.
- 인증 응답이 결제 통합업체 서버로 전송됩니다.
- 서명된 인증 응답 (
authenticationResponse
)이 결제 통합업체 UI로 다시 전송됩니다. - 인증 응답 (
authenticationResponse
)이 결제 통합업체 UI에서 Google UI로 전송됩니다. - Google UI는 구매 정보가 포함된 응답을 Google 서버에 전송합니다.
- Google 서버에서 결제 통합업체 서버(
authenticationRequestId
, GPT, 금액)에 사용 가능한 자금을 찾기 위한capture
메시지를 전송합니다. - 결제 통합업체 서버가 Google 서버로 성공 메시지를 다시 보냅니다.
- Google 서버가 Google UI에 성공 메시지를 보냅니다.
- Google UI가 고객에게 상품을 배송하거나 상품이 곧 배송될 것임을 알립니다.
SMS-MO 인증
모바일 기반 인증 흐름은 Short Message Service에서 결제 통합업체로 사용자의 휴대폰에서 전송된 인증 요청 ID가 포함된 SMS를 활용하여 사용자를 인증합니다.
다음은 다이어그램에 포함된 객체 목록과 각 객체가 나타내는 의미입니다.
- 사용자: Google 계정에 결제 수단을 추가하려는 사용자입니다.
- Google UI/기기: 이 경우 고객이 결제 수단을 설정하기 시작하는 Google 전화 앱입니다.
- Google 서버: 인증 요청 ID (ARID)가 포함된 SMS 명령을 생성하고 통합업체로부터 인증 결과를 수신하는 Google의 백엔드 서버입니다.
- 결제 통합업체 서버: 인증 SMS를 수신하고 인증 요청 ID를 Google에 반환하는 통합업체의 백엔드 서버입니다.
이는 인증 흐름이므로 이미 사용자가 앱 (Google UI)을 사용하고 있으며 결제 수단을 추가하려고 한다고 가정합니다. 여기서 초기화가 시작됩니다.
- 사용자가 추가할 토큰화된 결제 수단을 선택합니다.
- Google UI가 Google 서버를 호출하여 SMS-MO 챌린지를 시작합니다.
- Google 서버는 인증 요청 ID가 포함된 대상과 본문으로 구성된 SMS 안내를 반환합니다.
- Google UI가 결제 통합업체에 SMS를 보냅니다.
- 결제 통합업체 서버가 인증 요청 ID를 사용하여 Google 서버의 AuthenticationResultNotification 엔드포인트를 호출합니다.
- Google 서버에서 인증 요청 ID를 확인하고 그러면 SUCCESS라고 응답합니다.
- Google UI는 Google 서버를 호출하여 인증 시도 결과를 가져옵니다.
- Google 서버 응답 성공
SMS-MO 인증 시뮬레이션
Google에서는 SMS-MO 인증 흐름의 진단 테스트를 실행하기 위해 SMS 시뮬레이션 엔드포인트를 정의합니다. 따라서 샌드박스 환경에서 테스트 연결을 수행할 때 실제 SMS를 전송하고 확인할 필요가 없습니다.
다음은 다이어그램에 포함된 객체 목록과 각 객체가 나타내는 의미입니다.
- 테스터: SMS-MO 연결 진단 테스트를 시작하는 사람입니다.
- Google UI: 테스터가 SMS-MO 진단 테스트를 시작하고 상태를 모니터링하는 Google UI입니다.
- Google 서버: 인증 요청 ID (ARID)로 SMS 명령을 생성하고 시뮬레이션된 SMS 메시지를 전송하고 통합업체로부터 인증 결과를 수신하는 Google의 백엔드 서버
- 결제 통합업체 서버: 시뮬레이션된 인증 SMS를 수신하고 인증 요청 ID를 Google에 반환하는 통합업체의 백엔드 서버입니다.
이 흐름의 단계는 다음과 같습니다.
- 테스터는 테스트에 사용할 테스트 구독자 ID (SID)를 제공하여 SMS-MO 진단 테스트를 시작합니다. 이 SID는 결제 통합업체에 대한
simulateSms
호출에 포함됩니다. - Google UI가 Google 서버를 호출하여 SMS-MO 챌린지를 시작합니다.
- Google 서버는 인증 요청 ID가 포함된 대상과 본문으로 구성된 SMS 안내를 반환합니다. 이 테스트의 목적상 목적지는 결제 통합업체의 샌드박스 HTTPS 연결에 의해 재정의됩니다.
- Google UI는 Google 서버를 호출하여 시뮬레이션된 SMS 메시지를 전송합니다.
simulateSms
호출은 Google 서버에서 결제 통합업체 서버로 이루어집니다. 인증 요청 ID 및 구독자 ID (1단계에서 제공)가 모두 API 호출에 포함됩니다.- 결제 통합업체 서버가 ACKNOWLEDGED를 응답합니다.
- Google 서버가 Google UI에 SUCCESS라고 응답합니다.
- 결제 통합업체 서버가 인증 요청 ID를 사용하여 Google 서버의 AuthenticationResultNotification 엔드포인트를 호출합니다.
- Google 서버가 SUCCESS로 응답합니다.
- Google UI는 Google 서버를 호출하여 인증 시도 결과를 가져옵니다.
- Google 서버가 COMPLETED로 응답합니다.
- Google UI는 Google 서버를 호출하여 연결 시도를 실행합니다.
associateAccount
호출은 Google 서버에서 결제 통합업체 서버로 이루어집니다.- 결제 통합업체 서버가 SUCCESS를 응답합니다.
- Google 서버가 SUCCESS로 응답합니다.
- 테스터에게 SMS-MO 진단 테스트가 완료되었음을 알리기 위해 Google UI가 업데이트됩니다.
권장사항 및 기타 고려사항
플랫폼 선택
모바일 앱과 데스크톱 웹 인증 흐름을 제공하면 통합업체가 대부분의 사용자에게 도달할 수 있습니다. Android 애플리케이션은 최상의 사용자 경험과 가장 높은 전환율을 제공하므로 통합업체에서 Android 애플리케이션을 지원하는 것이 좋습니다. 웹 및 Android 애플리케이션의 인증 API에 전달되는 매개변수는 동일합니다.