OpenID Connect SSO 개요

OpenID Connect(OIDC)는 주요 기술 회사에서 채택한 OAuth 2.0 기반 인증 프로토콜입니다.

OIDC에 대해 자세히 알아보기

기본 SSO

선택한 기능에 관계없이 기본 SSO의 설정 요구 사항은 동일합니다. 로열티 또는 신용카드 구현을 추가하려면 추가 정보가 필요합니다.

설정 요구 사항

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

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

Expedia의 표준 OIDC SSO 구현은 공개 키를 사용하여 암호화되고, 승인 후 엔드포인트를 생성하고, nonce를 활성화하고, 범위 매개변수를 설정합니다. 사용자 정보도 포함합니다.

승인

GET /authorize 엔드포인트는 인증 및 승인에 사용됩니다. 클라이언트에 승인 권한을 반환합니다.

요청 매개변수

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

응답 매개변수

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

토큰

POST /token 엔드포인트는 승인 권한을 제시하여 사용자의 신원을 확인하는 데 사용됩니다.

요청 매개변수

매개변수설명데이터 유형필수 여부
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
id_tokenOpenID 범위가 부여된 경우 반환되는 식별자String

ID_token은 클레임이라는 인증 정보가 포함된 JSON 웹 토큰(JWT)입니다. Expedia 템플릿 솔루션은 아래 표와 같이 header, payload, signature 클레임을 사용합니다.

헤더 클레임

필드설명데이터 유형필수 여부
alg사용된 디지털 서명 알고리즘 식별(항상 RS256)String아니요
kid키 ID: ID 토큰을 확인하는 데 사용되는 공개 키 식별. 해당 공개 키는 JSON 웹 키 세트(JWKS)를 통해 찾을 수 있습니다.String

페이로드 클레임

필드설명데이터 유형필수 여부
amr인증 방법에 대한 식별자인 JSON 문자열 배열Array아니요
aud이 ID 토큰이 의도한 대상 식별(애플리케이션의 OAuth 2.0 클라이언트 ID 중 하나)String
auth_time최종 사용자가 인증된 시간, Unix 시간(초)으로 표현됨Integer아니요
expID 토큰이 만료되는 시간, Unix 시간(초)으로 표현됨Integer
iatID 토큰이 발행된 시간, Unix 시간(초)으로 표현됨Integer아니요
idpID 공급자의 지표String
iss이 ID 토큰을 발행한 승인 서버의 URLString아니요
jti디버깅 및 해지 목적을 위한 이 ID 토큰에 대한 고유 식별자String
sub승인 호출의 주체(사용자)에 대한 고유 식별자String아니요
verID 토큰의 의미 체계 버전Integer

서명 클레임

서명 검증: 서명이 해당 client_id 및 알고리즘에 적합한 키에 대해 검증됩니다.

로열티 추가

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

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

표준 사용자 정보 외에 로열티 프로그램 설정에는 다음과 같은 값이 포함됩니다.

programAccount

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

결제 카드 제한

고객이 조직의 신용카드를 사용하여 예약하도록 사이트를 설정할 수 있습니다. 이는 선택 사항입니다. 모든 템플릿 솔루션은 모든 주요 신용카드나 직불카드, 그리고 (미국의 경우) PayPal을 허용할 수 있습니다.

신용카드를 안전하게 저장

조직의 맞춤형 신용카드를 사용하여 구매하도록 선택하는 경우 안전하게 사용할 수 있습니다. 이를 처리하는 방법은 다음과 같습니다.

  • 카드 정보는 고객의 Expedia 프로필에 연결된 토큰화된 형태로 저장됩니다. 암호화되지 않은 상태로 저장되는 경우는 없습니다.
  • 암호화되지 않은 카드 데이터에 누구도 액세스할 수 없으며, 암호 해독은 안전한 IAM 자격 증명을 사용해서만 수행됩니다.
  • 카드가 결제 페이지에 미리 로드되어 있는 경우 카드 번호가 아닌 카드 설명만 표시됩니다.
  • 고객은 저장된 카드로 예약을 완료하려면 카드의 CVC를 입력해야 합니다.

설정 요구 사항

표준 구현의 설정 요구 사항 외에도 신용카드를 추가하려면 다음이 필요합니다.

  • AuthnRequest 매개변수에 사용할 엔드포인트
  • 서명 인증을 위한 공개 키

Expedia의 개인 키를 사용하여 AuthnRequest 페이로드에 서명하고 공개 키를 사용하여 파트너사에 서명 검증을 제공합니다.

페이로드 세부 정보

표준 구현에 설명된 속성과 함께 고객이 사이트에 로그인하면 신용카드 SSO가 두 가지 거래 매개변수를 안전한 Expedia SSO 엔드포인트로 전송하기 시작합니다.

  • 사용자 정보 API: 서명 및 암호화된 어설션이 포함된 인코딩 및 서명된 응답 페이로드입니다.
  • RelayState: 랜딩 페이지 URL에 대한 딥 링크입니다.
Information

참고

템플릿 사이트가 로열티 포인트를 적립하도록 설정된 경우 programAccount 정보도 필요합니다.

페이로드에는 다음과 같은 신용카드 정보도 포함됩니다.

필드설명필수 여부
cardNumber청구할 카드 번호
cardType사용한 카드 유형(예: Visa, MasterCard, American Express)
expirationDate사용한 카드의 만료 날짜
BillingAddress사용한 카드와 연결된 청구 주소
addressCategoryCode청구할 주소 유형(예: 집 또는 사무실). BillingAddress 아래에 중첩됩니다.
firstAddressLine청구 주소의 첫 번째 줄. BillingAddress 아래에 중첩됩니다.
secondAddressLine청구 주소의 두 번째 줄. BillingAddress 아래에 중첩됩니다.아니요
thirdAddressLine청구 주소의 세 번째 줄. BillingAddress 아래에 중첩됩니다.아니요
cityName청구 주소의 도시. BillingAddress 아래에 중첩됩니다.
provinceName청구 주소의 주/도. BillingAddress 아래에 중첩됩니다.
postalCode청구 주소의 우편 번호. BillingAddress 아래에 중첩됩니다.
countryCode청구 주소의 국가 코드. BillingAddress 아래에 중첩됩니다.
이 페이지가 도움이 되었나요?
이 콘텐츠를 어떻게 개선하면 좋을까요?
더 나은 만드는 데 도움을 주셔서 감사합니다!