REST API V2 チェックリスト rest-api-v2-checklist
- トピック:
- Authentication
このドキュメントでは、Adobe Pass Authentication REST API V2を使用するクライアントアプリケーションを実装するプログラマーの必須の要件と推奨されるプラクティスを1か所にまとめています。
REST API V2を実装する場合、このドキュメントに従うことは受け入れ基準の一部と見なされ、統合を成功させるために必要なすべての手順が実行されていることを確認するためのチェックリストとして使用する必要があります。
必須要件 mandatory-requirements
1. 登録フェーズ mandatory-requirements-registration-phase
REST API v2呼び出しごとに新しいトークンをリクエストしないでください。アクセストークンは、有効期限が切れた場合にのみ更新してください。
2. 設定フェーズ mandatory-requirements-configuration-phase
認証フェーズの前にMVPD (TV プロバイダー)の選択を促す必要がある場合にのみ、コンフィギュレーション応答を取得します。
次の場合は、コンフィギュレーション応答を取得する必要はありません。
- ユーザーは既に認証されています。
- ユーザーには一時的なアクセス権が付与されます。
- ユーザー認証の有効期限が切れましたが、以前に選択したMVPDのサブスクライバーであることを確認するように求められます。
ユーザーの有料TV プロバイダー(MVPD)の選択内容を永続的なストレージに保存し、その後のすべてのフェーズで使用します。
- 設定レスポンスから、ユーザーが選択したMVPDの「ID」を保存します。
- コンフィギュレーションレスポンスから、ユーザーが選択したMVPDの「displayName」を保存します。
- 設定レスポンスから、ユーザーが選択したMVPDの「logoUrl」を保存します。
3. 認証フェーズ mandatory-requirements-authentication-phase
次の条件でポーリングメカニズムを開始します。
プライマリ(画面)アプリケーション内で実行された認証
- プライマリ(ストリーミング)アプリケーションは、ユーザーコンポーネントがSessions エンドポイントリクエストの「redirectUrl」パラメーターに指定されたURLを読み込んだ後、最終宛先ページに到達したときにポーリングを開始する必要があります。
- プライマリ(ストリーミング)アプリケーションは、ユーザーが認証プロセスを開始するとすぐにポーリングを開始する必要があります(セッションエンドポイント応答を受信し、ユーザーに認証コードを表示した直後)。
次の条件でポーリングメカニズムを停止します。
認証に成功
- ユーザーのプロファイル情報が正常に取得され、認証ステータスが確認されるため、ポーリングは不要になります。
認証セッションとコードの有効期限
- 認証セッションとコードが期限切れになると、ユーザーは認証プロセスを再起動する必要があり、以前の認証コードを使用したポーリングはすぐに停止する必要があります。
新しい認証コードが生成されました
- ユーザーが新しい認証コードを要求した場合、既存のセッションは無効になり、以前の認証コードを使用したポーリングはすぐに停止する必要があります。
次の条件でポーリングメカニズムの頻度を設定します。
プライマリ(画面)アプリケーション内で実行される認証
- プライマリ(ストリーミング)アプリケーションは、3~5秒以上ごとにポーリングする必要があります。
- プライマリ(ストリーミング)アプリケーションは、3~5秒ごとにポーリングする必要があります。
ユーザーのプロファイル情報の一部を永続的なストレージに保存し、パフォーマンスを向上させ、不要なREST API v2呼び出しを最小限に抑えます。
キャッシュでは、次のプロファイル応答フィールドに焦点を当てる必要があります:
mvpd
- クライアントアプリケーションはこれを使用して、ユーザーが選択したテレビプロバイダーを追跡し、事前認証フェーズまたは承認フェーズでさらに使用し続けることができます。
- 現在のユーザープロファイルが期限切れになると、クライアントアプリケーションは記憶されたMVPDの選択範囲を使用し、ユーザーに確認を依頼することができます。
属性
- 様々なユーザーメタデータキー(zip、maxRatingなど)に基づいてユーザーエクスペリエンスをパーソナライズするために使用されます。
- 認証フローが完了すると、ユーザーメタデータが使用できるようになります。そのため、クライアントアプリケーションは、プロファイル情報に既に含まれているため、ユーザーメタデータ情報を取得するために別のエンドポイントをクエリする必要はありません。
- 特定のメタデータ属性は、MVPD(Charterなど)および特定のメタデータ属性(householdIDなど)に応じて、承認フェーズ中に更新される場合があります。 その結果、クライアントアプリケーションは、最新のユーザーメタデータを取得するために、認証後にProfiles APIを再度クエリする必要がある場合があります。
4. (オプション)事前認証フェーズ mandatory-requirements-preauthorization-phase
監視および警告システムを回避するリスク。
一部の強化されたエラーコードのみが再試行を許可しますが、ほとんどの場合、アクション フィールドで指定された代替解決策が必要です。
事前認証の決定を取得するために実装された再試行メカニズムが無限ループにならないこと、および再試行を合理的な数(2-3)に制限することを確認します。
5. 承認フェーズ mandatory-requirements-authorization-phase
再生中にメディアトークンが期限切れになった場合でも、ストリームを中断せずに続行できるようにし、ユーザーが次の再生リクエストを行う際に、同じリソースまたは別のリソースに関わらず、(新鮮な)メディアトークンを含む新しい承認決定をリクエストします。
長時間のライブストリームを実行している場合、コンテンツの一時停止、商用利用の開始、MRSSの変更時のアセットレベル設定の変更などのビデオ操作に従って、新しい承認決定をリクエストできます。
監視および警告システムを回避するリスク。
一部の強化されたエラーコードのみが再試行を許可しますが、ほとんどの場合、アクション フィールドで指定された代替解決策が必要です。
認証の決定を取得するために実装された再試行メカニズムが無限ループにならないこと、および再試行を合理的な数(2-3)に制限することを確認します。
6. ログアウトフェーズ mandatory-requirements-logout-phase
ログアウト APIを実装して、ユーザーが手動でログアウトし、認証済みプロファイルを終了し、削除された各プロファイルに指定されたREST API v2 アクション名に従えるようにします。
- ログアウトエンドポイントをサポートするMVPDの場合、クライアントアプリケーションはユーザーエージェントで指定された「URL」に移動する必要があります。
- 「appleSSO」タイプのプロファイルの場合、クライアントアプリケーションは、パートナーレベル(Appleのシステム設定)からもログアウトするようにユーザーをガイドする必要があります。
7. パラメーターとヘッダー mandatory-requirements-parameters-headers
リクエストがデバイスの代理でサーバーから送信された場合でも、AP-Device-Identifier ヘッダー値は実際のストリーミングデバイス識別子を反映する必要があります。
リクエストがデバイスの代理でサーバーから送信された場合でも、X-Device-Info ヘッダー値は実際のストリーミングデバイス情報を反映する必要があります。
さらに、ストリーミングデバイス connectionIpやconnectionPortなどの一部のフィールドは、Spectrumのホームベース認証などの機能に必須です。
ハードウェア IDのないプラットフォームの場合は、アプリケーション属性から一意のIDを生成して保持します。
8. エラー処理 mandatory-requirements-error-handling
一部の強化されたエラーコードのみが再試行を許可しますが、ほとんどの場合、アクション フィールドで指定された代替解決策が必要です。
拡張エラーコード - REST API V2 ドキュメントに記載されている最も強化されたエラーコードは、アプリケーションを起動する前に開発フェーズで正しく処理された場合、完全に防ぐことができます。
拡張エラーコードの処理が見つからないため、クライアントアプリケーションが誤動作するリスクがあります。不明確なエラーメッセージ、不適切なユーザーガイダンス、誤ったフォールバック動作が発生します。
再試行が必要なHTTP エラーコードは限られていますが、ほとんどの場合は代替解決策が必要です。
アプリケーションを起動する前に開発段階で正しく処理すれば、ほとんどのHTTP エラー応答を完全に防ぐことができます。
拡張エラーコードの処理が見つからないため、クライアントアプリケーションが誤動作するリスクがあります。不明確なエラーメッセージ、不適切なユーザーガイダンス、誤ったフォールバック動作が発生します。
9. テスト mandatory-requirements-testing
Adobe Pass認証の公式な非実稼働環境を使用して、アプリケーションを開発およびテストします。
- Prequal-Production
- リリースステージング
これらの環境で完全な品質保証(QA)を実行してから、Release-Productionに起動してください。
クライアントアプリケーションは、非実稼動環境でエンドツーエンドの検証を最初に完了せずにRelease-Productionに進んではなりません。
短く効率的なデバッグパスを欠くと、Adobe サポートとエンジニアリングが迅速に介入する妨げになる可能性があります。
推奨される慣行 recommended-practices
1. 登録フェーズ recommended-practices-registration-phase
HTTP 401 「未承認」エラーを処理するための再試行メカニズムでは、最初に元のリクエストを再試行する前に、アクセストークンが更新されていることを確認します。
2. 設定フェーズ recommended-practices-configuration-phase
3. 認証フェーズ recommended-practices-authentication-phase
次の条件で/api/v2/authenticate APIを呼び出す前に、セカンダリ (2nd) アプリケーション (screen)でユーザー入力を介して送信された認証コードを検証します。
事前選択されたmvpdを使用して、セカンダリ (screen) アプリケーション内で実行された認証
- 認証セッションを再開 - POST /api/v2/{serviceProvider}/sessions/{code}を使用します
事前に選択されたmvpdを使用せずに、セカンダリ(画面)アプリケーション内で認証が実行されました
- 認証セッションを取得 - GET /api/v2/{serviceProvider}/sessions/{code}を使用します
提供された認証コードが間違って入力された場合、または認証セッションが期限切れになった場合、クライアントアプリケーションはエラーを受け取ります。
クライアントアプリケーションビジネスで必要な場合に備えて、非基本フローをサポートします。
- 劣化したアクセスフロー(プレミアム機能)
- 一時的なアクセスフロー(プレミアム機能)
- シングルサインオンアクセスフロー(標準機能)
4. (オプション)事前認証フェーズ recommended-practices-preauthorization-phase
5. 承認フェーズ recommended-practices-authorization-phase
6. ログアウトフェーズ recommended-practices-logout-phase
7. パラメーターとヘッダー recommended-practices-parameters-headers
REST API v1のコードを再利用して、DCR APIを呼び出し、アクセストークンを取得します。
8. テスト recommended-practices-testing
デバイスとプラットフォーム間で、次の基本フローがテストされていることを確認します。
認証フロー
- プライマリアプリ(画面)の認証シナリオ
- セカンダリアプリ(画面)認証のシナリオ
(オプション)事前認証フロー
- 許可の決定シナリオのテスト
- テスト拒否の決定シナリオ
承認フロー
- 許可の決定シナリオのテスト
- テスト拒否の決定シナリオ
ログアウトフロー
さらに、他のアクセスフローをテストします(該当する場合):
- 劣化したアクセスフロー(プレミアム機能)
- 一時的なアクセスフロー(プレミアム機能)
- シングルサインオンアクセスフロー(標準機能)
Adobe MVPDとの主要な統合(最も広く使用されているプロバイダーを含む)について説明します。
概要 summary
アクセス トークンをキャッシュ
プロファイルの一部をキャッシュ
サポートのデグラデーション機能(ビジネス要件の場合)
TempPass機能(ビジネス要件の場合)
シングルサインオン機能(ビジネス要件の場合)をサポート
メカニズムの微調整を再試行する
メカニズムの微調整を再試行する
メディアトークンの検証
HTTP エラー処理の実装