OAuth 2.0 SSO の概要

OAuth 2.0 は、アプリケーションが HTTP サービス上のユーザーアカウントへの限定的なアクセス権を取得できるようにする承認フレームワークです。ユーザーアカウントをホストするサービスにユーザー認証を委譲し、サードパーティのアプリケーションにユーザーアカウントへのアクセスを許可することで機能します。OAuth 2.0 は、Web およびデスクトップアプリケーション、モバイルデバイスのための承認フローを提供します。

OAuth 2.0 の詳細

ベーシック SSO

選択した機能に関係なく、ベーシック SSO ではいくつかの特定のデータ、特に公開鍵を必要とします。ロイヤルティまたはクレジットカードの実装を追加すると、追加情報が必要になります。

設定情報

テンプレートサイトへの OAuth 2.0 SSO アクセスを適切に設定するには以下が必要です。

  • API (認証、トークン、ユーザープロフィール)
  • ClientId
  • クライアントシークレット
  • ResponseMode
  • isNounceEnabled
  • customerDetailsAPIKey (利用可能な場合)

エクスペディアの標準的な OAuth 2.0 SSO 実装はエクスペディアの公開鍵を使用して暗号化され、承認後エンドポイントを作成し、ノンスを有効にし、スコープパラメーターを設定します。ユーザー情報も含めます。

承認

GET /authorize エンドポイントは認証と承認に使用されます。クライアントに承認グラントを返します。

フィールド説明データタイプサンプル値必須/必須ではない
client_idクライアントを識別します。ID プロバイダー (IDP) に事前に登録されている値と一致する必要があります。手動クライアント登録時、または Dynamic Client Registration API 経由で取得されます。文字列 必須
nonceリプレイ攻撃を軽減するために使用されます。この値は ID トークンで返されます。文字列 必須
prompt検証に必要なインタラクションのタイプ。文字列有効な値 :
none
consent
必須ではない
redirect_uri認証コードまたはトークンを送信するコールバックの場所。クライアント登録時に IDP に事前登録された値と一致する必要があります。文字列 必須
response_typecode (IDP) の値。文字列 必須
response_mode承認レスポンスを返す方法。文字列有効な値 :
query
必須ではない
scopeプロフィールの詳細を取得するために使用されるアクセストークン。認証リクエストに必要です。文字列OpenID、profile、email必須
stateインタラクションの状態。この値はトークンで返され、ユーザーがクリックスルーし、認証して本来興味のあるページに戻ることを可能にします。値には英数字、カンマ、ピリオド、アンダースコア、ハイフンを含めることができます。文字列 必須

レスポンスパラメーター

パラメーター説明データタイプ必須/必須ではない
codeクライアントを識別する認証コード。IDP に事前に登録されている値と一致する必要があります。手動クライアント登録時、または Dynamic Client Registration API 経由で取得されます。文字列必須
stateインタラクションの状態。この値はトークンで返され、ユーザーがクリックスルーし、認証して本来興味のあるページに戻ることを可能にします。値には英数字、カンマ、ピリオド、アンダースコア、ハイフンを含めることができます。文字列必須

トークン

POST /token エンドポイントは、承認グラントを提示することで、ユーザーの身元を検証するために使用されます。

リクエストパラメーター

パラメーター説明データタイプサンプル値必須/必須ではない
grant_typeトークンの作成を承認するために IDP が使用するメカニズム。文字列authorization_code必須
redirect_uri承認が送信されたコールバックの場所を指定します。この値は、元の authorization_code の生成に使われた redirect_uri と一致する必要があります。文字列 必須
code/authorize 呼び出しレスポンスで受信したクライアント識別コード。文字列 必須

リクエストヘッダー

パラメーター説明データタイプサンプル値必須/必須ではない
accept「application/json」とする必要があります。文字列application/json必須
authorizationクライアント ID とシークレットを Base64 でエンコードします。HTTP 承認ヘッダーにエンコードされた情報を使用します。文字列Basic<Base64 でエンコードされたクライアント ID とシークレット>必須
Content-Type「application/x-www-form-urlencoded」にする必要があります。文字列application/x-www-form-urlencoded必須

レスポンスプロパティ

フィールド説明データタイプ
access_tokenアクセストークン文字列
token_typeトークンの対象者文字列
expires_inアクセストークンの有効期限 (秒)整数型
scopeアクセストークンに含まれるスコープ文字列
id_tokenOpenID スコープが許可されている場合に返される識別子文字列

ID トークン

ID_token は JSON Web トークン (JWT) で、クレームと呼ばれる認証情報の断片を含んでいます。エクスペディアのテンプレートソリューションではクレームとして headerpayloadsignature を使用しています。

ヘッダークレーム

フィールド説明データタイプ必須/必須ではない
alg使用されるデジタル署名アルゴリズムを特定 (常に RS256)文字列必須ではない
kidキー ID : ID トークンの検証に使用される公開鍵を特定 (対応する公開鍵は、JSON Web Key Set (JWKS) 経由で見つけることができます)文字列必須

ペイロードクレーム

フィールド説明データタイプ必須/必須ではない
amr認証方法の識別子となる文字列の JSON 配列配列必須ではない
audこの ID トークンの対象者を特定 (アプリケーションの OAuth 2.0 クライアント ID のいずれか)文字列必須
auth_timeエンドユーザーが認証された時刻 (Unix時間 (秒) で表される)整数型必須ではない
expID トークンの有効期限 (Unix時間 (秒) で表される)整数型必須
iatID トークンが発行された時刻 (Unix時間 (秒) で表される)整数型必須ではない
idpID プロバイダーのインジケーター文字列必須
issこの ID トークンを発行した承認サーバーの URL文字列必須ではない
jtiデバッグと失効を目的とした、この ID トークンの一意の識別子文字列必須
sub承認呼び出しの対象 (ユーザー) の一意の識別子文字列必須ではない
verID トークンのセマンティックバージョン整数型必須

署名クレーム

署名の検証:署名は client_id とアルゴリズムに適切な鍵に対して検証されます。

ロイヤルティの追加

テンプレートサイトの一部として、顧客が旅行の購入でロイヤルティポイントを獲得できる機能を含めることができます。テンプレートでは、必要に応じて顧客が貯めたロイヤルティポイントを利用して旅行を購入できるようにすることもできます。

多くの値と同様に、標準実装と同じ設定要件が適用されます。異なるものだけをここに掲載します。

標準的なユーザー情報 に加えて、ロイヤルティプログラム設定には以下の値が含まれます。

programAccount

フィールド説明必須/必須ではない
programId顧客が参加しているロイヤルティプログラムの識別子、またはロイヤルティプログラムに関連付けられているステータス名必須
loyaltyAccountNumber顧客のロイヤルティアカウント番号 (ロイヤルティオペレーションにセカンダリ識別子 (一意の membershipId 以外) が必要な場合にのみ入力する必要があります)必須ではない
lastFourDigitsOfCreditCard顧客が予約に使用したクレジットカードの下 4 桁必須ではない
accountNameプログラム名 (ステータス名と異なる場合)必須ではない
loyaltyConversionRatio支払いにおける獲得ポイント率 (例 : 100 円 = 1 ポイント)必須ではない
loyaltyAccountBalance顧客が獲得したロイヤルティポイントの現在の残高必須
valueロイヤルティ残高 (loyaltyAccountBalance の下にネスト)必須
currencyロイヤルティプログラムで使用される獲得通貨 (例 : さまざまな通貨、ポイント、マイル) (loyaltyAccountBalance の下にネスト)必須
このページは役に立ちましたか ?
このコンテンツに改善が必要な点があれば、
サービス向上にご協力いただきありがとうございます。