This is an auto-generated translation

OAuth 2.0 SSO 개요

OAuth 2.0은 애플리케이션이 HTTP 서비스에 대해 사용자 계정이 제한된 액세스 권한을 얻을 수 있도록 지원하는 승인 프레임워크입니다. 사용자 계정을 호스팅하는 서비스에 사용자 인증을 위임하고 타사 애플리케이션이 사용자 계정에 액세스할 수 있도록 승인하는 방식으로 작동합니다. OAuth 2.0은 웹 및 데스크톱 애플리케이션과 모바일 기기를 위한 승인 흐름을 제공합니다.

OAuth 2.0에 대해 자세히 알아보기

기본 SSO

선택한 기능에 관계없이 기본 SSO에는 몇 가지 특정 데이터, 특히 공개 키가 필요합니다. 로열티 또는 신용카드 구현을 추가하려면 추가 정보가 필요합니다.

설정 정보

템플릿 사이트에 대한 OAuth 2.0 SSO 액세스를 올바르게 설정하려면 다음과 같이 몇 가지 사항이 필요합니다.

  • API(승인, 토큰, userProfile)
  • ClientId
  • 클라이언트 암호
  • ResponseMode
  • isNonceEnabled
  • customerDetailsAPIKey(사용 가능한 경우)

권한 부여 흐름

OAuth Authorization flows

엔드포인트 인증

GET /authorize 엔드포인트는 인증 및 승인에 사용됩니다. 클라이언트 포스트 사용자에게 권한 부여 또는 코드를 반환합니다. logged-in. 브라우저 리디렉션입니다.

필드설명데이터 유형샘플 값필수 여부
client_id클라이언트를 식별합니다. IDP(ID 공급자)에 사전 등록된 값과 일치해야 합니다. 수동 클라이언트 등록 중에 또는 동적 클라이언트 등록 API를 통해 얻습니다.String 
nonce재전송 공격을 완화하는 데 사용됩니다. 이 값은 ID 토큰으로 반환됩니다.String 
prompt검증에 필요한 상호 작용 유형입니다. "비어 있음"이면 사용자가 아직 인증되지 않은 경우 로그인해야 합니다. '없음'인 경우 IDP는 로그인 메시지를 표시하지 않지만 로그인한 경우 인증 코드를 반환하고 그렇지 않은 경우 오류를 반환합니다.String유효한 값:
none
또는 EMPTY
아니요
redirect_uri인증 코드 또는 토큰을 전송해야 하는 콜백 위치입니다. 클라이언트 등록 시 IDP에 사전 등록된 값과 일치해야 합니다.String 
response_typecode(IDP) 값입니다.String 
response_mode승인 응답이 반환되는 방법입니다.String유효한 값:
query
아니요
scope프로필 세부 정보를 가져오는 데 사용되는 액세스 토큰입니다. 인증 요청에 필요합니다.String프로필 및 이메일
state상호 작용의 상태입니다. 이 값은 토큰으로 반환되며, 사용자는 이를 통해 클릭하고 인증을 받고, 원래 관심을 가졌던 페이지로 돌아갈 수 있습니다. 값에는 영숫자, 쉼표, 마침표, 밑줄, 하이픈 문자가 포함될 수 있습니다.String 
ui_locales사용자가 선호하는 사용자 인터페이스 언어 및 스크립트.Stringen_CA, fr_CA아니요
audience의도된 수신자입니다.String파트너에 의해 정의아니요

응답 매개변수

매개변수설명데이터 유형필수 여부
code클라이언트를 식별하는 인증 코드입니다. IDP에 사전 등록된 값과 일치해야 합니다. 수동 클라이언트 등록 중에 또는 동적 클라이언트 등록 API를 통해 얻습니다.String
state상호 작용의 상태입니다. 이 값은 토큰으로 반환되며, 사용자는 이를 통해 클릭하고 인증을 받고, 원래 관심을 가졌던 페이지로 돌아갈 수 있습니다. 값에는 영숫자, 쉼표, 마침표, 밑줄, 하이픈 문자가 포함될 수 있습니다.String

샘플 인증 URL

https://example.com/authorize?client_id={clientID}&response_type=code&state=d6b93799-404b-4205-9bb3-c579b1180428&scope=email profile&nounce=234567687867&redirect_uri=https://{ExpediaDomain}/sso/auth

샘플 콜백 URL

https://{ExpediaDomain}/sso/auth?code=12345678&state=d6b93799-404b-4205-9bb3-c579b1180428

토큰 엔드포인트

POST /token엔드포인트는 권한 부여 또는 코드를 제시하여 액세스 토큰과 ID 토큰을 얻는 데 사용되는 백엔드 API 호출입니다.

요청 매개변수

매개변수설명데이터 유형필수 여부
grant_typeIDP가 토큰 생성을 승인하는 데 사용하는 메커니즘입니다. 값: authorization_codeString
redirect_uri승인이 전송된 콜백 위치를 지정합니다. 이 값은 원래 authorization_code 생성에 사용되는 redirect_uri와 일치해야 합니다.String
code/authorize 호출 응답에서 받은 클라이언트 식별 코드입니다.String

요청 헤더

매개변수설명데이터 유형샘플 값필수 여부
accept"application/json"이어야 합니다.Stringapplication/json
authorization클라이언트 ID와 암호를 Base64로 인코딩합니다. HTTP 승인 헤더에 인코딩된 정보를 사용합니다.StringBasic<Base64로 인코딩된 클라이언트 ID 및 암호>
Content-Type"application/x-www-form-urlencoded"여야 합니다.Stringapplication/x-www-form-urlencoded

응답 속성

필드설명데이터 유형
access_token액세스 토큰String
token_type토큰의 대상String
expires_in액세스 토큰의 만료 시간(초)Integer
scope액세스 토큰에 포함된 범위String

샘플 토큰 CURL

curl --location 'https://example.com/token’ \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Authorization: Basic {encoded ClientID:clientSecret}' \
--data-urlencode 'grant_type=authorization_code' \
--data-urlencode 'redirect_uri=https://{ExpediaDomain}/sso/auth’ \
--data-urlencode 'code={Authorization code after login as part of callback to Expedia /sso/auth endpoint}'

토큰 응답 샘플

{
    "access_token": "eyJhbGciOi.JSUzI1NiIsImtpZCI6Ilk1MkFDVXd3QV9SUzI1NiIsInBp.LmF0bSI6ImlrY20ifQ",
    "token_type": "Bearer",
    "expires_in": 1799
}

사용자정보 엔드포인트

GET /userinfo 엔드포인트는 제공된 액세스 토큰을 기반으로 인증된 사용자에 대한 클레임을 반환하는 백엔드 API 호출입니다.

요청 헤더

필드설명데이터 유형샘플 값필수 여부
ClientId클라이언트를 식별합니다. IDP(ID 공급자)에 사전 등록된 값과 일치해야 합니다. 수동 클라이언트 등록 중에 또는 동적 클라이언트 등록 API를 통해 얻습니다.String 
Authorization사용자 인증을 위해 자격 증명 또는 토큰을 전송하는 데 사용되는 HTTP 헤더String무기명 [access_token]

응답

필드설명데이터 유형샘플 값필수 여부
membershipId고객 계정을 고유하게 식별하는 식별자String 
optIn고객이 마케팅 이메일 수신 동의 시 부울 플래그 설정부울참/거짓아니요
languageId사용자가 선호하는 언어StringEN, FR아니요
channelType사용자가 애플리케이션과 상호 작용하는 다양한 플랫폼String웹, 모바일, 태블릿아니요
firstName고객 이름String 
middleName고객의 중간 이름String 아니요
lastName고객의 성String 아니요
email고객의 이메일 주소String 아니요
programAccountLoyalty-related 정보programAccount객체에 대한 자세한 내용은 아래 Add loyalty -> programAccount 섹션을 참조하세요.아니요

샘플 사용자 정보 CURL

curl --location 'https://example.com/userinfo' \
--header 'client_id: {clientId}' \
--header 'Authorization: Bearer {acess_token from token endpoint}'

사용자 정보 응답 샘플

{
  "membershipId": "12345678",
  "languageID": "en",
  "middleName": "MiddleName",
  "lastName": "LastName",
  "firstName": "FirstName",
  "email": "test@expediagroup.com",
  "programAccount": {
    "programId": "Gold",
    "loyaltyAccountBalance": {
      "value": "10000",
      "currency": "Points"
    }
  }
}

로열티 추가

템플릿 사이트의 일부로 고객이 여행 상품 구매 시 로열티 포인트를 적립할 수 있는 기능을 포함할 수 있습니다. 선택하면 고객이 적립된 로열티 포인트를 사용하여 여행 상품을 구매하도록 템플릿을 설정할 수도 있습니다.

표준 구현과 동일한 설정 요구 사항이 적용되며, 여러 가지 값도 마찬가지입니다. 다르게 적용되는 값만 여기에 포함되어 있습니다.

로열티 프로그램 설정에는 표준 user information 외에도 다음 값이 포함됩니다.

programAccount

필드설명데이터 유형필수 여부
programId고객이 가입한 로열티 프로그램의 식별자 또는 로열티 프로그램과 관련된 등급 이름String
loyaltyAccountNumber고객의 로열티 계정 번호. 로열티 작업에 고유 membershipId 외의 보조 식별자가 필요한 경우에만 채워져야 합니다.String아니요
lastFourDigitsOfCreditCard고객이 예약에 사용한 신용카드의 마지막 4자리 숫자Integer아니요
accountName프로그램 이름(등급 이름과 다른 경우)String아니요
loyaltyConversionRatio결제액이 적립 포인트로 전환되는 비율(예: $1 = 1포인트)Double아니요
loyaltyAccountBalance고객이 적립한 로열티 포인트의 현재 잔액금액
(객체 세부 정보는 아래 금액 섹션을 참조하세요).
아니요

금액

필드설명데이터 유형필수 여부
value로열티 잔액. loyaltyAccountBalance 아래에 중첩됩니다.
currency로열티 프로그램에서 사용하는 적립 통화(예: CAD, USD, 포인트, 마일). loyaltyAccountBalance 아래에 중첩됩니다.String
이 페이지가 도움이 되었나요?
이 콘텐츠를 어떻게 개선하면 좋을까요?
더 나은 Developer Hub를 만드는 데 도움을 주셔서 감사합니다!