Amazon SSO クックブック(REST API V2) amazon-sso-cookbook-rest-api-v2
Adobe Pass認証 REST API V2 は、FireOS で動作するクライアントアプリケーションのエンドユーザーに対して、Platform シングルサインオン(SSO)をサポートしています。
このドキュメントは、既存の REST API V2 概要の拡張機能として機能し概要の概要と、 プラットフォーム ID フローを使用したシングルサインオンの実装方法を説明するドキュメントを提供します。
platform id フローを使用したAmazonのシングルサインオン cookbook
前提条件 prerequisites
プラットフォーム ID フローを使用してAmazonのシングルサインオンに進む前に、次の前提条件が満たされていることを確認してください。
Amazon SSO SDK の統合 integrate-amazon-sso-sdk
ストリーミングアプリケーションは、シングルサインオン(SSO)用の Amazon SSO SDK ライブラリをビルドに組み込む必要があります。
-
最新のAmazon SSO SDK ライブラリをダウンロードして、アプリケーションのディレクトリと並行して
/SSOEnabler
フォルダーにコピーします。 -
マニフェストと Gradle ファイルを更新して、Amazon SSO SDK ライブラリを使用するようにします。
マニフェスト:
code language-java <uses-library android:name="com.amazon.ottssotokenlib" android:required="false">
Gradle:
リポジトリで:
code language-java flatDir { dirs '../SSOEnabler' }
依存関係の下:
code language-java provided fileTree(include: ['ottSSOTokenStub.jar'], dir: '../SSOEnabler')
Amazon SSO SDK の使用 use-amazon-sso-sdk
ストリーミングアプリケーションは、Amazon SSO SDK を使用して SSO トークン(プラットフォーム ID)ペイロードを取得する必要があります。
Amazon SSO SDK は、SSO トークン(プラットフォーム ID)ペイロードを取得するための同期 API と非同期 API の両方を提供します。
ストリーミングアプリケーションは、アーキテクチャに基づいて 2 つのオプションのいずれかを選択できます。
非同期 API
-
SSOEnabler
インスタンスを取得し、SSOEnablerCallback
を設定します。code language-java SSOEnabler ssoEnabler = SSOEnabler.getInstance(context); SSOEnablerCallback ssoEnablerCallback = new SSOEnablerCallbackImpl(); ssoEnabler.setSSOTokenCallback(ssoEnablerCallback);
これは、ストリーミングアプリケーションの初期化中に実行できます。
code language-java public static abstract class SSOEnablerCallback { public abstract void getSSOTokenSuccess(Bundle result); public abstract void getSSOTokenFailure(Bundle result); }
SSO トークンサクセス応答バンドルには、次の情報が含まれます。
- キー「SSOToken」を持つ
string
としての SSO トークン。
SSO トークン失敗応答バンドルには、次の内容が含まれます。
- キー「ErrorCode」を含む
int
のエラーコード。 - キー「ErrorDescription」を含む
string
のエラーの説明。
- キー「SSOToken」を持つ
-
SSO トークンを取得します。
code language-java Bundle getSSOTokenAsync(Void);
この API は、初期化中に設定されたコールバックを介して応答を提供します。
同期 API
-
SSOEnabler
インスタンスを取得します。code language-java SSOEnabler ssoEnabler = SSOEnabler.getInstance(context);
-
SSO トークンを取得します。
code language-java Bundle getSSOTokenSync(Void);
この API は呼び出し元スレッドをブロックし、結果のバンドルで応答します。 これは同期呼び出しなので、メインスレッドでは使用しないでください。
code language-java void setSSOTokenTimeout(long);
この API は、同期呼び出しのタイムアウト値を設定します。 デフォルトタイムアウト値は 1 分です。
Amazon SSO のフォールバック fallback-amazon-sso
ストリーミングアプリケーションは、Amazon SSO フローから通常の認証フローへのフォールバックシナリオを処理する必要があります。
ストリーミングアプリケーションで次の処理が行われていることを確認します。
-
Amazon デバイス上で動作する必要のあるAmazon コンパニオンアプリケーションがない。
- ストリーミングアプリケーションでは、次のクラス
com.amazon.ottssotokenlib.SSOEnabler
ードで実行時にClassNotFoundException
が発生する場合があります。
- ストリーミングアプリケーションでは、次のクラス
-
上記の API で返す必要のある SSO トークン(プラットフォーム ID)ペイロードがありません。
- ストリーミングアプリケーションは、AmazonおよびAdobeの担当者に連絡して調査する場合があります。
ワークフロー workflow
Amazon SSO トークン(プラットフォーム ID)ペイロードは、Adobe Pass認証 REST API V2 エンドポイントに対して行われたすべての HTTP リクエストに存在する必要があります。
/api/v2/*
Adobe Pass認証 REST API V2 は、デバイススコープまたはプラットフォームスコープの識別子である SSO トークン(Platform ID)ペイロードを受け取るために次のメソッドをサポートしています。
Adobe-Subject-Token
という名前のヘッダーとして。
Adobe-Subject-Token
ヘッダーについて詳しくは、Adobe – 件名 – トークンドキュメントを参照してください。サンプル
ヘッダーとしての送信
GET /api/v2/{serviceProvider}/sessions HTTP/1.1
Host: sp-preprod.auth.adobe.com
Adobe-Subject-Token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJyb2t1IiwiaWF0IjoxNTExMzY4ODAyLCJleHAiOjE1NDI5MDQ4MDIsImF1ZCI6ImFkb2JlIiwic3ViIjoiNWZjYzMwODctYWJmZi00OGU4LWJhZTgtODQzODViZTFkMzQwIiwiZGlkIjoiY2FmZjQ1ZDAtM2NhMy00MDg3LWI2MjMtNjFkZjNhMmNlOWM4In0.JlBFhNhNCJCDXLwBjy5tt3PtPcqbMKEIGZ6sr2NA
Adobe-Subject-Token
ヘッダー値がない場合や無効な場合、Adobe Pass Authentication はシングルサインオンを考慮せずにリクエストを処理します。