Apple SSO クックブック (REST API V2) apple-sso-cookbook-rest-api-v2
Adobe Pass Authentication REST API V2は、iOS、iPadOS、またはtvOSで動作するクライアントアプリケーションのエンドユーザー向けに、パートナーシングルサインオン(SSO)をサポートしています。
このドキュメントは、上位レベルのビューを提供する既存のREST API V2概要と、パートナーフロー🔗を使用して シングルサインオンを実装する方法を説明するドキュメントの拡張機能として機能します。
パートナーフローを使用したApple シングルサインオン cookbook
前提条件 prerequisites
パートナーフローを使用してApple シングルサインオンを続行する前に、次の前提条件を満たしていることを確認してください。
-
ストリーミングアプリケーションは、Adobe Pass Authentication バックエンドがデバイスプラットフォームとその機能を識別できるように、
X-Device-Infoおよび/またはUser-Agentヘッダーで必要なすべてのデータを収集する必要があります。X-Device-Infoヘッダーについて詳しくは、X-Device-Info ドキュメントを参照してください。 -
ストリーミングアプリケーションは、デバイスレベルで保存されたユーザーのサブスクリプション情報へのアクセスを要求する必要があります。この場合、ユーザーは、デバイスのカメラまたはマイクへのアクセスを提供するのと同様に、続行するためのアプリケーション権限を付与する必要があります。 この権限は、AppleのVideo Subscriber Account Frameworkを使用してアプリケーションごとに要求する必要があり、デバイスはユーザーの選択内容を保存します。
Apple シングルサインオンのユーザーエクスペリエンスのメリットを説明して、サブスクリプション情報へのアクセスを拒否するユーザーにインセンティブを提供することをお勧めしますが、アプリケーションの設定(TV プロバイダーのアクセス権)に移動するか、iOSおよびiPadOSの
Settings -> TV ProviderまたはtvOSのSettings -> Accounts -> TV Providerに移動して決定を変更できることに注意してください。ストリーミングアプリケーションは、ユーザー認証を必要とする前に、任意の時点で ユーザーのサブスクリプション情報にアクセスする権限を確認できるため、アプリケーションがフォアグラウンド状態に入ると、ユーザーの権限を要求できます。
- ストリーミングアプリケーションは、プログラマーに適用される オンボーディングの前提条件を完了しました。Apple シングルサインオン ユーザーエクスペリエンスを有効にするために必要です。
ワークフロー workflow
次の図に示すように、パートナーフローを使用してApple シングルサインオンを実装するには、所定の手順を実行します。
パートナーフローを使用したApple シングルサインオン
-
クライアント資格情報の取得: ストリーミングアプリケーションは、クライアント登録エンドポイントを呼び出して、クライアント資格情報を取得するために必要なすべてのデータを収集します。
note important IMPORTANT 詳しくは、 クライアント資格情報の取得 API ドキュメントを参照してください。 software_statementなど、すべての_必須_ パラメーターContent-Type、X-Device-Infoなど、必須 ヘッダーすべて- すべての_optional_ パラメーターとヘッダー
-
クライアント資格情報を返します: クライアント登録エンドポイントの応答には、受信したパラメーターとヘッダーに関連付けられたクライアント資格情報に関する情報が含まれます。
note important IMPORTANT クライアント認証情報レスポンスで提供される情報の詳細については、 クライアント認証情報の取得 API ドキュメントを参照してください。 クライアントレジスタは、基本的な条件が満たされていることを確認するために、リクエストデータを検証します。 - 必須 パラメーターとヘッダーは有効である必要があります。
検証が失敗すると、エラー応答が生成され、 クライアント資格情報の取得 API ドキュメントに準拠する追加情報が提供されます。 note tip TIP クライアントの資格情報はキャッシュして無期限に使用する必要があります。 -
アクセストークンの取得: ストリーミングアプリケーションは、クライアントトークンエンドポイントを呼び出して、アクセストークンを取得するために必要なすべてのデータを収集します。
note important IMPORTANT 詳細については、 アクセストークンの取得 API ドキュメントを参照してください。 client_id、client_secret、grant_typeなど、必須のすべてのパラメーターContent-Type、X-Device-Infoなど、必須 ヘッダーすべて- すべての_optional_ パラメーターとヘッダー
-
戻りアクセストークン: クライアントトークンエンドポイントの応答には、受信したパラメーターとヘッダーに関連付けられたアクセストークンに関する情報が含まれます。
note important IMPORTANT アクセストークン応答で提供される情報について詳しくは、 アクセストークンの取得 API ドキュメントを参照してください。 クライアントトークンは、基本的な条件が満たされていることを確認するために、リクエストデータを検証します。 - 必須 パラメーターとヘッダーは有効である必要があります。
検証が失敗すると、エラー応答が生成され、 アクセストークンの取得 API ドキュメントに準拠する追加情報が提供されます。 note tip TIP アクセストークンはキャッシュされ、指定された期間内(24時間の有効期間など)にのみ使用する必要があります。 有効期限が切れた後、ストリーミングアプリケーションは新しいアクセストークンをリクエストする必要があります。
-
パートナーフレームワークのステータスを取得: ストリーミングアプリケーションは、Appleによって開発された ビデオ購読者アカウントフレームワーク を呼び出して、ユーザーの権限とプロバイダー情報を取得します。
note important IMPORTANT 詳しくは、 ビデオ購読者アカウントフレームワーク のドキュメントを参照してください。 ストリーミングアプリケーションは、このフェーズでユーザーを中断できないことを示すために、 VSAccountMetadataRequestオブジェクトのisInterruptionAllowedプロパティにfalseと等しいブール値を指定する必要があります。note tip TIP プロ向けのヒント: コードスニペットに従い、コメントに細心の注意を払います。 code language-swift ... let videoSubscriberAccountManager: VSAccountManager = VSAccountManager(); videoSubscriberAccountManager.checkAccessStatus(options: [VSCheckAccessOption.prompt: true]) { (accessStatus, error) -> Void in switch (accessStatus) { // The user allows the application to access subscription information. case VSAccountAccessStatus.granted: // Construct the request for subscriber account information. let vsaMetadataRequest: VSAccountMetadataRequest = VSAccountMetadataRequest(); // This is actually the SAML Issuer not the channel ID. vsaMetadataRequest.channelIdentifier = "https://saml.sp.auth.adobe.com"; // This is the subscription account information needed at this step. vsaMetadataRequest.includeAccountProviderIdentifier = true; // This is the subscription account information needed at this step. vsaMetadataRequest.includeAuthenticationExpirationDate = true; // This is going to make the Video Subscriber Account Framework to refrain from prompting the user with the providers picker at this step. vsaMetadataRequest.isInterruptionAllowed = false; // Submit the request for subscriber account information - accountProviderIdentifier. videoSubscriberAccountManager.enqueue(vsaMetadataRequest) { vsaMetadata, vsaError in if (vsaMetadata != nil && vsaMetadata!.accountProviderIdentifier != nil) { // The vsaMetadata!.authenticationExpirationDate will contain the expiration date for current authentication session. // The vsaMetadata!.authenticationExpirationDate should be compared against current date. ... // The vsaMetadata!.accountProviderIdentifier will contain the provider identifier as it is known for the platform configuration. // The vsaMetadata!.accountProviderIdentifier represents the platformMappingId in terms of Adobe Pass Authentication configuration. ... // The application must determine the MVPD id property value based on the platformMappingId property value obtained above. // The application must use the MVPD id further in its communication with Adobe Pass Authentication services. ... // Continue with the "Retrieve profiles" step. ... } else { // The user is not authenticated at platform level, continue with the "Retrieve profiles" step. ... } } // The user has not yet made a choice or does not allow the application to access subscription information. default: // Continue with the "Retrieve profiles" step. ... } } ... -
パートナーフレームワークのステータス情報を返します: ストリーミングアプリケーションは、応答データを検証して、基本的な条件が満たされていることを確認します。
- ユーザー権限のアクセスステータスが付与されます。
- ユーザープロバイダーマッピング識別子が存在し、有効です。
- ユーザープロバイダープロファイルの有効期限(使用可能な場合)は有効です。
-
プロファイルの取得: ストリーミングアプリケーションは、プロファイルエンドポイントにリクエストを送信して、すべてのプロファイル情報を取得するために必要なすべてのデータを収集します。
note important IMPORTANT この手順で 必ず 使用するREST API v2 エンドポイントは、次のいずれかです。 - プロファイルの取得 API
または - 特定のmvpd APIのプロファイルを取得
この手順では、パートナー認証応答🔗 APIを使用して プロファイルを作成および取得するを使用しないでください。 note important IMPORTANT 詳しくは、 プロファイルの取得 APIまたは特定のmvpd API ドキュメントのプロファイルの取得を参照してください。 serviceProvider(またはmvpd)など、すべての_必須_ パラメーターAuthorization、AP-Device-Identifier、AP-Partner-Framework-Statusなど、必須 ヘッダーすべて- すべての_optional_ パラメーターとヘッダー
ストリーミングアプリケーションは、取得した応答に「appleSSO」タイプのプロファイルが含まれるように、パートナーフレームワークのステータスに有効な値が含まれていることを確認する必要があります。 AP-Partner-Framework-Statusヘッダーについて詳しくは、AP-Partner-Framework-Statusのドキュメントを参照してください。 -
見つかったプロファイルに関する情報を返します: プロファイル エンドポイントの応答には、受信したパラメーターとヘッダーに関連付けられている見つかったプロファイルに関する情報が含まれます。
-
プロファイルを選択し、決定フローに進みます: プロファイル エンドポイントの応答にプロファイルが含まれている場合、ストリーミング アプリケーションは内部ロジック(最終的にはエンドユーザーとのやり取り)を使用して、使用可能なプロファイルの1つを選択し、その後の決定フローを続行します。
-
パートナー認証フローで続行: プロファイル エンドポイント応答にプロファイルが含まれていない場合、ストリーミング アプリケーションはパートナー認証フローで続行します。
-
設定の取得: ストリーミングアプリケーションは、構成エンドポイントにリクエストを送信することで、アクティブな統合を持つMVPDのリストを取得するために必要なすべてのデータを収集します。
note important IMPORTANT 詳細については、特定のサービスプロバイダー APIの設定の取得に関するドキュメントを参照してください。 serviceProviderなど、すべての_必須_ パラメーターAuthorization、AP-Device-Identifier、X-Device-Infoなど、必須 ヘッダーすべて- すべての_optional_ パラメーターとヘッダー
-
戻り値の設定:設定エンドポイントの応答には、サービスプロバイダーとのアクティブな統合を持つMVPDに関する情報が含まれます。
note important IMPORTANT 設定応答で提供される情報について詳しくは、特定のサービスプロバイダー🔗 API ドキュメントの設定の取得を参照してください。 設定エンドポイントは、基本的な条件が満たされていることを確認するために、リクエストデータを検証します。 - 必須 パラメーターとヘッダーは有効である必要があります。
検証が失敗すると、エラー応答が生成され、拡張エラーコード のドキュメントに準拠する追加情報が提供されます。 note important IMPORTANT ストリーミングアプリケーションは、さらに進む際に、各MVPDに提供される次の詳細を処理する必要があります。 enablePlatformServices: MVPDが現在Apple シングルサインオンをサポートしているかどうかを示します。displayInPlatformPicker: MVPDをApple ピッカーに表示できるかどうかを示します。boardingStatus: MVPDがApple シングルサインオンでオンボーディングされているかどうかを示します。
-
パートナーフレームワークのステータスを取得: ストリーミングアプリケーションは、Appleによって開発された ビデオ購読者アカウントフレームワーク を呼び出して、ユーザーの権限とプロバイダー情報を取得します。
note important IMPORTANT 詳しくは、 ビデオ購読者アカウントフレームワーク のドキュメントを参照してください。 ストリーミングアプリケーションは、 VSAccountMetadataRequestオブジェクトのisInterruptionAllowedプロパティにtrueに等しいブール値を指定し、このフェーズでTV プロバイダーを選択するためにユーザーを中断できることを示す必要があります。note tip TIP プロ向けのヒント: コードスニペットに従い、コメントに細心の注意を払います。 code language-swift ... let videoSubscriberAccountManager: VSAccountManager = VSAccountManager(); // This must be a class implementing the VSAccountManagerDelegate protocol. let videoSubscriberAccountManagerDelegate: VideoSubscriberAccountManagerDelegate = VideoSubscriberAccountManagerDelegate(); videoSubscriberAccountManager.delegate = videoSubscriberAccountManagerDelegate; videoSubscriberAccountManager.checkAccessStatus(options: [VSCheckAccessOption.prompt: true]) { (accessStatus, error) -> Void in switch (accessStatus) { // The user allows the application to access subscription information. case VSAccountAccessStatus.granted: // Construct the request for subscriber account information. let vsaMetadataRequest: VSAccountMetadataRequest = VSAccountMetadataRequest(); // This is actually the SAML Issuer not the channel ID. vsaMetadataRequest.channelIdentifier = "https://saml.sp.auth.adobe.com"; // This is the subscription account information needed at this step. vsaMetadataRequest.includeAccountProviderIdentifier = true; // This is the subscription account information needed at this step. vsaMetadataRequest.includeAuthenticationExpirationDate = true; // This is going to make the Video Subscriber Account Framework to prompt the user with the providers picker at this step. vsaMetadataRequest.isInterruptionAllowed = true; // This can be computed from the Configuration service response in order to filter the TV providers from the Apple picker. vsaMetadataRequest.supportedAccountProviderIdentifiers = supportedAccountProviderIdentifiers; // This can be computed from the Configuration service response in order to sort the TV providers from the Apple picker. if #available(iOS 11.0, tvOS 11, *) { vsaMetadataRequest.featuredAccountProviderIdentifiers = featuredAccountProviderIdentifiers; } // Submit the request for subscriber account information - accountProviderIdentifier. videoSubscriberAccountManager.enqueue(vsaMetadataRequest) { vsaMetadata, vsaError in if (vsaMetadata != nil && vsaMetadata!.accountProviderIdentifier != nil) { // The vsaMetadata!.authenticationExpirationDate will contain the expiration date for current authentication session. // The vsaMetadata!.authenticationExpirationDate should be compared against current date. ... // The vsaMetadata!.accountProviderIdentifier will contain the provider identifier as it is known for the platform configuration. // The vsaMetadata!.accountProviderIdentifier represents the platformMappingId in terms of Adobe Pass Authentication configuration. ... // The application must determine the MVPD id property value based on the platformMappingId property value obtained above. // The application must use the MVPD id further in its communication with Adobe Pass Authentication services. ... // Continue with the "Retrieve partner authentication request" step. ... } else { // The user is not authenticated at platform level. if (vsaError != nil) { // The application can check to see if the user selected a provider which is present in Apple picker, but the provider is not onboarded in platform SSO. if let error: NSError = (vsaError! as NSError), error.code == 1, let appleMsoId = error.userInfo["VSErrorInfoKeyUnsupportedProviderIdentifier"] as! String? { var mvpd: Mvpd? = nil; // The requestor.mvpds must be computed during the "Return configuration" step. for provider in requestor.mvpds { if provider.platformMappingId == appleMsoId { mvpd = provider; break; } } if mvpd != nil { // Continue with the "Proceed with basic authentication flow" step, but you can skip prompting the user with your MVPD picker and use the mvpd selection, therefore creating a better UX. ... } else { // Continue with the "Proceed with basic authentication flow" step. ... } } else { // Continue with the "Proceed with basic authentication flow" step. ... } } else { // Continue with the "Proceed with basic authentication flow" step. ... } } } // The user has not yet made a choice or does not allow the application to access subscription information. default: // Continue with the "Proceed with basic authentication flow" step. ... } } ... -
パートナーフレームワークのステータス情報を返します: ストリーミングアプリケーションは、応答データを検証して、基本的な条件が満たされていることを確認します。
- ユーザー権限のアクセスステータスが付与されます。
- ユーザープロバイダーマッピング識別子が存在し、有効です。
- ユーザープロバイダープロファイルの有効期限(使用可能な場合)は有効です。
-
パートナー認証要求を取得: ストリーミングアプリケーションは、Sessions パートナーエンドポイントを呼び出して、認証セッションを開始するために必要なすべてのデータを収集します。
note important IMPORTANT 詳細については、 パートナー認証リクエストの取得 API ドキュメントを参照してください。 serviceProviderやpartnerなど、必須のすべてのパラメーター- 必須 ヘッダー(
Authorization、AP-Device-Identifier、Content-Type、X-Device-Info、AP-Partner-Framework-Statusなど) - すべての_optional_ ヘッダーとパラメーター
ストリーミングアプリケーションは、取得した応答にパートナー認証要求(SAML リクエスト)が含まれるように、パートナーフレームワークのステータスに有効な値が含まれていることを確認する必要があります。 AP-Partner-Framework-Statusヘッダーについて詳しくは、AP-Partner-Framework-Statusのドキュメントを参照してください。 -
次のアクションを示します: セッション パートナーのエンドポイント応答には、次のアクションに関するストリーミングアプリケーションを導くために必要なデータが含まれています。
note important IMPORTANT セッション応答で提供される情報について詳しくは、 パートナー認証リクエストの取得 API ドキュメントを参照してください。 セッションパートナーエンドポイントは、基本的な条件が満たされていることを確認するために、リクエストデータを検証します。 - 必須 パラメーターとヘッダーは有効である必要があります。
- 指定された
serviceProviderとmvpdの統合はアクティブである必要があります。
基本的な検証が失敗した場合は、エラー応答が生成され、拡張エラーコード のドキュメントに準拠する追加情報が提供されます。 セッションパートナーエンドポイントは、パートナーシングルサインオン条件が満たされていることを確認するために、リクエストデータを検証します。 - Adobe Pass サーバーのパートナーシングルサインオン設定は、有効で有効である必要があります。
- AP-Partner-Framework-Status ヘッダーを介して受信したパートナーフレームワークの状態ペイロードは有効である必要があります。
パートナーのシングルサインオンの検証が失敗した場合、応答はデフォルトで基本認証フローになります。 -
決定フローで続行: セッション パートナーのエンドポイント応答には、次のデータが含まれています。
actionName属性が「authorize」に設定されています。actionType属性が「direct」に設定されています。
Adobe Pass バックエンドが有効なプロファイルを識別する場合、後続の意思決定フローに使用できるプロファイルが既に存在するため、ストリーミングアプリケーションは選択したMVPDで再認証する必要がありません。
-
基本認証フローで続行: セッション パートナーのエンドポイント応答には、次のデータが含まれています。
actionName属性が「authenticate」または「resume」に設定されています。actionType属性が「インタラクティブ」または「ダイレクト」に設定されています。
Adobe Pass バックエンドで有効なプロファイルが識別されず、パートナーのシングルサインオン検証が失敗した場合、Adobe Pass サーバーは基本認証フローにフォールバックします。
基本認証フローについて詳しくは、次のドキュメントを参照してください。
-
パートナー認証応答フローを使用してプロファイルの作成と取得を進めます: セッション パートナーエンドポイント応答には、次のデータが含まれます。
actionName属性が「partner_profile」に設定されています。actionType属性が「direct」に設定されています。authenticationRequest - type属性には、パートナーフレームワークがMVPD ログインに使用するセキュリティプロトコルが含まれます(現在はSAMLのみ)。authenticationRequest - request属性には、パートナーフレームワークに渡されるSAML リクエストが含まれます。authenticationRequest - attributesNames属性には、パートナーフレームワークに渡されるSAML属性が含まれます。
Adobe Pass バックエンドが有効なプロファイルを識別せず、パートナーのシングルサインオン検証が合格した場合、ストリーミングアプリケーションは、MVPDで認証フローを開始するためのパートナーフレームワークに渡すアクションとデータを含む応答を受け取ります。
-
パートナーフレームワークを使用してMVPD認証を完了:前の手順で取得したパートナー認証リクエスト (SAML リクエスト)をVideo Subscriber Account Frameworkに転送します。 認証フローが成功すると、MVPDとのVideo Subscriber Account Frameworkのインタラクションにより、パートナーフレームワークのステータス情報とともに返されるパートナー認証応答(SAML応答)が生成されます。
note important IMPORTANT 詳しくは、 ビデオ購読者アカウントフレームワーク のドキュメントを参照してください。 ストリーミングアプリケーションは、 VSAccountMetadataRequestオブジェクトのisInterruptionAllowedプロパティにtrueに等しいブール値を指定し、このフェーズで選択したTV プロバイダーとの認証をユーザーが中断できることを示す必要があります。note tip TIP プロ向けのヒント: コードスニペットに従い、コメントに細心の注意を払います。 code language-swift ... let videoSubscriberAccountManager: VSAccountManager = VSAccountManager(); videoSubscriberAccountManager.checkAccessStatus(options: [VSCheckAccessOption.prompt: true]) { (accessStatus, error) -> Void in switch (accessStatus) { // The user allows the application to access subscription information. case VSAccountAccessStatus.granted: // Construct the request for subscriber account information. let vsaMetadataRequest: VSAccountMetadataRequest = VSAccountMetadataRequest(); // This is actually the SAML Issuer not the channel ID. vsaMetadataRequest.channelIdentifier = "https://saml.sp.auth.adobe.com"; // This is going to include subscription account information which should match the provider determined in a previous step. vsaMetadataRequest.includeAccountProviderIdentifier = true; // This is going to include subscription account information which should match the provider determined in a previous step. vsaMetadataRequest.includeAuthenticationExpirationDate = true; // This is going to make the Video Subscriber Account Framework to refrain from prompting the user with the providers picker at this step. vsaMetadataRequest.isInterruptionAllowed = false; // This are the user metadata fields expected to be available on a successful login and are determined from the Sessions SSO service. Look for the authenticationRequest > attributesNames associated with the provider determined in a previous step. vsaMetadataRequest.attributeNames = attributesNames; // This is the authenticationRequest > request field from Sessions SSO service. vsaMetadataRequest.verificationToken = authenticationRequestPayload; // Submit the request for subscriber account information. videoSubscriberAccountManager.enqueue(vsaMetadataRequest) { vsaMetadata, vsaError in if (vsaMetadata != nil && vsaMetadata!.samlAttributeQueryResponse != nil) { var samlResponse: String? = vsaMetadata!.samlAttributeQueryResponse!; // Remove new lines, new tabs and spaces. samlResponse = samlResponse?.replacingOccurrences(of: "[ \\t]+", with: " ", options: String.CompareOptions.regularExpression); samlResponse = samlResponse?.components(separatedBy: CharacterSet.newlines).joined(separator: ""); samlResponse = samlResponse?.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines); // Base64 encode. samlResponse = samlResponse?.data(using: .utf8)?.base64EncodedString(options: []); // URL encode. Please be aware not to double URL encode it further. samlResponse = samlResponse?.addingPercentEncoding(withAllowedCharacters: CharacterSet.init(charactersIn: "!*'();:@&=+$,/?%#[]").inverted); // Continue with the "Create and retrieve profile using partner authentication response" step. ... } else { // Continue with the "Proceed with basic authentication flow" step. ... } } // The user has not yet made a choice or does not allow the application to access subscription information. default: // Continue with the "Proceed with basic authentication flow" step. ... } } ... -
パートナー認証応答を返します: ストリーミングアプリケーションは、応答データを検証して、基本的な条件が満たされていることを確認します。
- ユーザー権限のアクセスステータスが付与されます。
- ユーザープロバイダーマッピング識別子が存在し、有効です。
- ユーザープロバイダープロファイルの有効期限(使用可能な場合)は有効です。
- パートナー認証応答(SAML応答)が存在し、有効です。
-
パートナー認証応答を使用したプロファイルの作成と取得: ストリーミングアプリケーションは、プロファイル パートナーエンドポイントを呼び出して、プロファイルの作成と取得に必要なすべてのデータを収集します。
note important IMPORTANT 詳細については、 パートナー認証応答を使用したプロファイルの作成と取得 API ドキュメントを参照してください。 serviceProvider、partner、SAMLResponseなど、必須のすべてのパラメーターAuthorization、AP-Device-Identifier、Content-Type、X-Device-Info、AP-Partner-Framework-Statusなど、必須のすべてのヘッダー- すべての_optional_ ヘッダーとパラメーター
ストリーミングアプリケーションは、取得した応答に「appleSSO」タイプのプロファイルが含まれるように、パートナーフレームワークのステータスとパートナー認証応答(SAML応答)の有効な値が含まれていることを確認する必要があります。 AP-Partner-Framework-Statusヘッダーについて詳しくは、AP-Partner-Framework-Statusのドキュメントを参照してください。 -
パートナープロファイルに関する情報を返します: プロファイルエンドポイントの応答には、パートナープロファイルに関する情報が含まれます。これには、属性
typeが「appleSSO」に設定されていることが含まれます。note important IMPORTANT プロファイル応答で提供される情報について詳しくは、 パートナー認証応答を使用したプロファイルの作成と取得 API ドキュメントを参照してください。 プロファイルパートナーエンドポイントは、基本的な条件が満たされていることを確認するために、リクエストデータを検証します。 - 必須 パラメーターとヘッダーは有効である必要があります。
- 指定された
serviceProviderとmvpdの統合はアクティブである必要があります。
検証が失敗すると、エラー応答が生成され、拡張エラーコード のドキュメントに準拠する追加情報が提供されます。 プロファイルパートナーエンドポイントは、パートナーシングルサインオン条件が満たされていることを確認するために、リクエストデータを検証します。 - Adobe Pass サーバーのパートナーシングルサインオン設定は、有効で有効である必要があります。
- AP-Partner-Framework-Status ヘッダーを介して受信したパートナーフレームワークの状態ペイロードは有効である必要があります。
パートナーシングルサインオンの検証が失敗した場合、応答はデフォルトで基本プロファイル取得フローになります。 -
決定フローで続行: ストリーミングアプリケーションは、後続の決定フローで続行できます。
-
パートナーフレームワークのステータスを取得: ストリーミングアプリケーションは、Appleによって開発された ビデオ購読者アカウントフレームワーク を呼び出して、ユーザーの権限とプロバイダー情報を取得します。
note important IMPORTANT 選択したユーザープロファイルタイプが「appleSSO」でない場合、ストリーミングアプリケーションはこの手順をスキップできます。 note important IMPORTANT 詳しくは、 ビデオ購読者アカウントフレームワーク のドキュメントを参照してください。 ストリーミングアプリケーションは、このフェーズでユーザーを中断できないことを示すために、 VSAccountMetadataRequestオブジェクトのisInterruptionAllowedプロパティにfalseと等しいブール値を指定する必要があります。note tip TIP ストリーミングアプリケーションでは、代わりにパートナーフレームワークのステータス情報にキャッシュ値を使用できます。これは、アプリケーションがバックグラウンドからフォアグラウンド状態に移行する際に更新することをお勧めします。 その場合、ストリーミングアプリケーションは、「パートナーフレームワークのステータス情報を返す」ステップで説明されているように、パートナーフレームワークのステータスに対して有効な値のみをキャッシュして使用する必要があります。 -
パートナーフレームワークのステータス情報を返します: ストリーミングアプリケーションは、応答データを検証して、基本的な条件が満たされていることを確認します。
- ユーザー権限のアクセスステータスが付与されます。
- ユーザープロバイダーマッピング識別子が存在し、有効です。
- ユーザープロバイダープロファイルの有効期限が有効です。
note important IMPORTANT 選択したユーザープロファイルタイプが「appleSSO」でない場合、ストリーミングアプリケーションはこの手順をスキップできます。 -
事前認証の決定を取得: ストリーミングアプリケーションは、「決定の事前認証エンドポイント」を呼び出して、リソースのリストに対する事前認証の決定を取得するために必要なすべてのデータを収集します。
note important IMPORTANT 詳しくは、特定のmvpd API ドキュメントを使用した事前承認決定の取得を参照してください。 serviceProvider、mvpd、resourcesなど、必須のすべてのパラメーターAuthorizationやAP-Device-Identifierなど、必須 ヘッダーすべて- すべての_optional_ パラメーターとヘッダー
選択したプロファイルが「appleSSO」タイプのプロファイルである場合、リクエストを実行する前に、ストリーミングアプリケーションにパートナーフレームワークのステータスの有効な値が含まれていることを確認する必要があります。 ただし、選択したユーザープロファイルタイプが「appleSSO」でない場合、この手順はスキップできます。 AP-Partner-Framework-Statusヘッダーについて詳しくは、AP-Partner-Framework-Statusのドキュメントを参照してください。 -
事前承認の決定を返します: 「決定事前承認」エンドポイント応答には、各リソースに対する
PermitまたはDenyの決定が含まれています。Permitの決定は、リソースが再生可能であることを意味します。 応答にはメディアトークンが含まれていません。事前承認フローを使用してリソースを再生することはできません。Denyの決定は、リソースが再生できないことを意味します。 応答には、拡張エラーコード のドキュメントに準拠するエラーペイロードが含まれます。
note important IMPORTANT 決定応答で提供される情報について詳しくは、特定のmvpd API ドキュメントを使用した事前承認決定の取得を参照してください。 決定事前認証エンドポイントは、基本的な条件が満たされていることを確認するために、リクエストデータを検証します。 - 必須 パラメーターとヘッダーは有効である必要があります。
- 指定された
serviceProviderとmvpdの統合はアクティブである必要があります。
検証が失敗すると、エラー応答が生成され、拡張エラーコード のドキュメントに準拠する追加情報が提供されます。 -
パートナーフレームワークのステータスを取得: ストリーミングアプリケーションは、Appleによって開発された ビデオ購読者アカウントフレームワーク を呼び出して、ユーザーの権限とプロバイダー情報を取得します。
note important IMPORTANT 選択したユーザープロファイルタイプが「appleSSO」でない場合、ストリーミングアプリケーションはこの手順をスキップできます。 note important IMPORTANT 詳しくは、 ビデオ購読者アカウントフレームワーク のドキュメントを参照してください。 ストリーミングアプリケーションは、このフェーズでユーザーを中断できないことを示すために、 VSAccountMetadataRequestオブジェクトのisInterruptionAllowedプロパティにfalseと等しいブール値を指定する必要があります。note tip TIP ストリーミングアプリケーションでは、代わりにパートナーフレームワークのステータス情報にキャッシュ値を使用できます。これは、アプリケーションがバックグラウンドからフォアグラウンド状態に移行する際に更新することをお勧めします。 その場合、ストリーミングアプリケーションは、「パートナーフレームワークのステータス情報を返す」ステップで説明されているように、パートナーフレームワークのステータスに対して有効な値のみをキャッシュして使用する必要があります。 -
パートナーフレームワークのステータス情報を返します: ストリーミングアプリケーションは、応答データを検証して、基本的な条件が満たされていることを確認します。
- ユーザー権限のアクセスステータスが付与されます。
- ユーザープロバイダーマッピング識別子が存在し、有効です。
- ユーザープロバイダープロファイルの有効期限が有効です。
note important IMPORTANT 選択したユーザープロファイルタイプが「appleSSO」でない場合、ストリーミングアプリケーションはこの手順をスキップできます。 -
承認決定の取得: ストリーミングアプリケーションは、「決定の承認」エンドポイントを呼び出して、特定のリソースの承認決定を取得するために必要なすべてのデータを収集します。
note important IMPORTANT 詳しくは、特定のmvpd🔗 API ドキュメントを使用した承認決定の取得を参照してください。 serviceProvider、mvpd、resourcesなど、必須のすべてのパラメーターAuthorizationやAP-Device-Identifierなど、必須 ヘッダーすべて- すべての_optional_ パラメーターとヘッダー
選択したプロファイルが「appleSSO」タイプのプロファイルである場合、リクエストを実行する前に、ストリーミングアプリケーションにパートナーフレームワークのステータスの有効な値が含まれていることを確認する必要があります。 ただし、選択したユーザープロファイルタイプが「appleSSO」でない場合、この手順はスキップできます。 AP-Partner-Framework-Statusヘッダーについて詳しくは、AP-Partner-Framework-Statusのドキュメントを参照してください。 -
返品承認決定:決定承認エンドポイント応答には、特定のリソースに対する
PermitまたはDenyの決定が含まれています:Permitの決定は、リソースが再生可能であることを意味します。 応答には、メディアトークンが含まれます。Denyの決定は、リソースが再生できないことを意味します。 応答には、拡張エラーコード のドキュメントに準拠するエラーペイロードが含まれます。
note important IMPORTANT 決定応答で提供される情報について詳しくは、特定のmvpd API ドキュメントを使用した承認決定の取得を参照してください。 決定承認エンドポイントは、基本的な条件が満たされていることを確認するために、リクエストデータを検証します。 - 必須 パラメーターとヘッダーは有効である必要があります。
- 指定された
serviceProviderとmvpdの統合はアクティブである必要があります。
検証が失敗すると、エラー応答が生成され、拡張エラーコード のドキュメントに準拠する追加情報が提供されます。
-
Adobe Pass ログアウトの開始: ストリーミング アプリケーションは、Adobe Pass ログアウトエンドポイントを呼び出して、ログアウトフローを開始するために必要なすべてのデータを収集します。
note important IMPORTANT 詳しくは、特定のmvpd API ドキュメントのログアウトの開始を参照してください。 serviceProvider、mvpd、redirectUrlなど、必須のすべてのパラメーターAuthorization、AP-Device-Identifierなど、必須 ヘッダーすべて- すべての_optional_ パラメーターとヘッダー
-
次のアクションを示します。 Adobe Pass ログアウトエンドポイントの応答には、次のアクションに関するストリーミングアプリケーションをガイドするために必要なデータが含まれています。
- ユーザーがログアウトフローを完了するにはパートナー(システム)レベルとやり取りする必要があるため、
url属性がありません。 actionName属性が「partner_logout」に設定されています。actionType属性が「partner_interactive」に設定されています。
note important IMPORTANT 削除されたユーザープロファイルタイプが「appleSSO」の場合、ストリーミングアプリケーションは、 actionNameおよびactionType属性で指定されているように、パートナーレベルでログアウトプロセスを完了するようにユーザーに促す必要があります。note important IMPORTANT ログアウト応答で提供される情報について詳しくは、特定のmvpd🔗 API ドキュメントの ログアウトの開始を参照してください。 Adobe Pass ログアウトエンドポイントは、基本的な条件が満たされていることを確認するために、リクエストデータを検証します。 - 必須 パラメーターとヘッダーは有効である必要があります。
- 指定された
serviceProviderとmvpdの統合はアクティブである必要があります。
検証が失敗すると、エラー応答が生成され、拡張エラーコード のドキュメントに準拠する追加情報が提供されます。 - ユーザーがログアウトフローを完了するにはパートナー(システム)レベルとやり取りする必要があるため、