(レガシー) iOS/tvOS SDK Cookbook iostvos-sdk-cookbook
概要 intro
このドキュメントでは、iOS/tvOS AccessEnabler ライブラリが公開するAPIを通じて、プログラマーの上位レベルのアプリケーションが実装できる使用権限ワークフローについて説明します。
IOS/tvOS用のAdobe Pass認証エンタイトルメントソリューションは、最終的に次の2つのドメインに分かれています。
-
UI ドメイン – これは、UIを実装し、AccessEnabler ライブラリが提供するサービスを使用して制限付きコンテンツへのアクセスを提供する上位レベルのアプリケーション層です。
-
AccessEnabler ドメイン – これは、使用権限ワークフローが次の形式で実装される場所です。
- Adobeのバックエンドサーバーへのネットワーク呼び出し
- 認証ワークフローと承認ワークフローに関連するビジネス論理ルール
- 様々なリソースの管理とワークフロー状態(トークンキャッシュなど)の処理
AccessEnabler ドメインの目的は、使用権限ワークフローのすべての複雑さを非表示にし、使用権限ワークフローを実装する簡単な使用権限プリミティブのセットを(AccessEnabler ライブラリを通じて)上位アプリケーションに提供することです。
- 依頼者IDの設定
- 特定のID プロバイダーに対する認証の確認と取得
- 特定のリソースの認証を確認して取得
- ログアウト
- Apple VSA フレームワークのプロキシを使用したApple SSO フロー
AccessEnablerのネットワーク アクティビティは独自のスレッドで実行されるので、UI スレッドはブロックされません。 その結果、2つのアプリケーションドメイン間の双方向通信チャネルは、完全非同期パターンに従う必要があります。
- UI アプリケーション層は、AccessEnabler ライブラリによって公開されたAPI呼び出しを介して、AccessEnabler ドメインにメッセージを送信します。
- AccessEnablerは、UI レイヤーがAccessEnabler ライブラリに登録するAccessEnabler プロトコルに含まれるコールバック メソッドを介してUI レイヤーに応答します。
Experience Cloud ID サービス(訪問者ID)の設定 visitorIDSetup
Experience Cloud ID値の設定は、Analyticsの観点から重要です。 visitorIDの値が設定されると、SDKはネットワーク呼び出しごとにこの情報を送信し、Adobe Pass認証サーバーはこの情報を収集します。 Adobe Pass Authentication Serviceの分析を、他のアプリケーションやweb サイトから取得した他の分析レポートと関連付けることができます。 visitorIDの設定方法に関する情報については、こちらを参照してください。
使用権限フロー entitlement
A. 前提条件
B. 起動フロー
C. Apple SSOを使用した認証フロー
D. iOS上のApple SSOを使用した認証フロー
E. tvOSでのApple SSOによる認証フロー
F. 承認フロー
G. メディアフローを表示
H. Apple SSOのないログアウトフロー
私は。 Apple SSOを使用したログアウトフロー
A.前提条件 prereqs
-
コールバック関数を作成します。
-
setRequestorComplete() -
setRequestor () によってトリガーされ、成功または失敗を返します。
-
成功とは、使用権限の呼び出しを続行できることを示します。
-
- プロバイダー(MVPD)を選択しておらず、まだ認証されていない場合にのみ、
getAuthentication()によってトリガーされます。 mvpdsパラメーターは、ユーザーが利用できるプロバイダーの配列です。
- プロバイダー(MVPD)を選択しておらず、まだ認証されていない場合にのみ、
-
setAuthenticationStatus(status, errorcode)- 毎回
checkAuthentication()によってトリガーされます。 - ユーザーが既に認証され、プロバイダーを選択した場合にのみ
getAuthentication()によってトリガーされます。 - 返されるステータスが「成功」または「失敗」の場合、エラーコードは失敗のタイプを表します。
- 毎回
-
- ユーザーがMVPDを選択した後に
getAuthentication()によってトリガーされます。urlパラメーターは、MVPDのログインページの場所を提供します。
- ユーザーがMVPDを選択した後に
-
sendTrackingData(event, data)- トリガー:
checkAuthentication()、getAuthentication()、checkAuthorization()、getAuthorization()、setSelectedProvider()。 eventパラメーターは、どのエンタイトルメントイベントが発生したかを示します。dataパラメーターは、イベントに関連する値のリストです。
- トリガー:
-
setToken(token, resource)- リソースの表示に成功した後、checkAuthorization () およびgetAuthorization () によってトリガーされます。
tokenパラメーターは短期間有効なメディアトークンです。resourceパラメーターは、ユーザーが表示を許可されているコンテンツです。
-
tokenRequestFailed(resource, code, description)- 失敗した認証の後、checkAuthorization () およびgetAuthorization () によってトリガーされます。
resourceパラメーターは、ユーザーが表示しようとしたコンテンツです。codeパラメーターは、どのタイプのエラーが発生したかを示すエラーコードです。descriptionパラメーターは、エラーコードに関連するエラーを説明します。
-
selectedProvider(mvpd)- トリガー:
getSelectedProvider() mvpdパラメーターは、ユーザーが選択したプロバイダーに関する情報を提供します。
- トリガー:
-
setMetadataStatus(metadata, key, arguments)- トリガー:
getMetadata(). metadataパラメーターは要求した特定のデータを提供します。keyパラメーターはgetMetadata () リクエストで使用されるキーです。argumentsパラメーターは、getMetadata () に渡された同じディクショナリーです。
- トリガー:
-
preauthorizedResources(authorizedResources)-
authorizedResourcesパラメーターは、ユーザーが指定したリソースを表示します
は表示権限を持っています。
-
presentTvProviderDialog(viewController)- 現在の依頼者が少なくともSSO サポートを持つMVPDでサポートしている場合、getAuthentication () によってトリガーされます。
- viewController パラメーターはApple SSO ダイアログであり、メインビューコントローラーで表示する必要があります。
-
dismissTvProviderDialog(viewController)- ユーザーのアクションによってトリガーされます(Apple SSO ダイアログから「キャンセル」または「その他のテレビプロバイダー」を選択します)。
- viewController パラメーターはApple SSO ダイアログであり、メインビューコントローラーから除外する必要があります。
-
ロ。起動フロー startup_flow
-
上位レベルのアプリケーションを開始します。
-
Adobe Pass認証を開始
a.
initを呼び出して、Adobe Pass Authentication AccessEnablerの1つのインスタンスを作成します。- 依存関係: Adobe Pass Authentication Native iOS/tvOS Library (AccessEnabler)
b.
setRequestor()を呼び出して、プログラマーのIDを確立します。プログラマーのrequestorIDと(オプションで)Adobe Pass認証エンドポイントの配列を渡します。 tvOSの場合は、公開鍵と秘密鍵を指定する必要があります。 詳しくは、 クライアントレスのドキュメント を参照してください。-
依存関係:有効なAdobe Pass Authentication RequestorID (Adobe Pass Authentication Accountで作業する)
マネージャーがこれを手配します)。 -
トリガー:
setRequestorComplete () コールバック。
note NOTE 要求者IDが完全に確立されるまで、使用権限の要求は完了できません。 これは、 setRequestor()がまだ実行中でありながら、その後のすべての使用権限リクエストを有効に意味します。 例えば、checkAuthentication()はブロックされています。2つの実装オプションがあります。依頼者識別情報がバックエンドサーバーに送信されると、UI アプリケーション層は次の2つのアプローチのいずれかを選択できます。
-
setRequestorComplete()コールバック (AccessEnabler デリゲートの一部)のトリガーを待ちます。 このオプションは、setRequestor()が完了した最も確実な結果を提供するので、ほとんどの実装で推奨されます。 -
setRequestorComplete()コールバックのトリガーを待たずに続行し、使用権限リクエストの発行を開始します。 これらの呼び出し(checkAuthentication、checkAuthorization、getAuthentication、getAuthorization、checkPreauthorizedResource、getMetadata、logout)は、AccessEnabler ライブラリによってキューに入れられ、setRequestor()の後に実際のネットワーク呼び出しが行われます。 このオプションは、ネットワーク接続が不安定な場合などに中断されることがあります。
-
checkAuthentication()を呼び出して、完全な認証フローを開始せずに既存の認証を確認します。 この呼び出しが成功した場合は、認証フローに直接進むことができます。 そうでない場合は、認証フローに進みます。-
依存関係: setRequestor () への呼び出しが成功しました(この依存関係は、以降のすべての呼び出しにも適用されます)。
-
トリガー: setAuthenticationStatus () コールバック。
-
C. Apple SSOを使用しない認証フロー authn_flow_wo_applesso
-
getAuthentication()を呼び出して認証フローを開始するか、ユーザーが既に存在することを確認します
認証済み:トリガー:
-
ユーザーが既に認証されている場合は、setAuthenticationStatus () コールバック。 この場合、認証フローに直接進みます。
-
ユーザーがまだ認証されていない場合は、displayProviderDialog () コールバック。
-
-
送信先のプロバイダーのリストをユーザーに提示する
displayProviderDialog(). -
ユーザーがプロバイダーを選択した後、
navigateToUrl:またはnavigateToUrl:useSVC:コールバックからユーザーのMVPDのURLを取得し、UIWebView/WKWebViewまたはSFSafariViewControllerコントローラーを開いて、そのコントローラーをURLに誘導します。 -
前の手順でインスタンス化した
UIWebView/WKWebViewまたはSFSafariViewControllerを通じて、ユーザーはMVPDのログインページにアクセスし、ログイン資格情報を入力します。 コントローラ内で複数のリダイレクト操作が行われます。
nullをパラメーターとして呼び出して、AccessEnablerにこのイベントを通知する責任があります。 これにより、AccessEnablerは内部状態をクリーンアップし、認証フローをリセットできます。-
ユーザーが正常にログインすると、アプリケーションレイヤーによって特定のカスタム URLの読み込みが検出されます。 この特定のカスタム URLは実際には無効であり、コントローラが実際に読み込むことを意図していないことに注意してください。 認証フローが完了し、
UIWebView/WKWebViewまたはSFSafariViewControllerコントローラーを安全に閉じることができることを示すシグナルとしてのみ、アプリケーションで解釈する必要があります。SFSafariViewControllerコントローラーを使用する必要がある場合、特定のカスタム URLはapplication's custom scheme(例:adbe.u-XFXJeTSDuJiIQs0HVRAg://adobe.com)によって定義されます。定義されていない場合、この特定のカスタム URLはADOBEPASS_REDIRECT_URL定数(つまり、adobepass://ios.app)によって定義されます。 -
UIWebView/WKWebViewまたはSFSafariViewController コントローラーを閉じ、AccessEnablerの
handleExternalURL:urlAPI メソッドを呼び出して、AccessEnablerにバックエンドサーバーから認証トークンを取得するように指示します。 -
(オプション)
checkPreauthorizedResources(resources)を呼び出して、ユーザーが表示を許可されているリソースを確認します。resourcesパラメーターは、ユーザーの認証トークンに関連付けられた、保護されたリソースの配列です。 ユーザーのMVPDから取得した認証情報の使用の1つは、UIを装飾することです(例えば、保護されたコンテンツの横にロックされた/ロック解除されたシンボル)。- トリガー:
preauthorizedResources()コールバック - 実行ポイント:完了した認証フローの後
- トリガー:
-
認証が成功した場合は、認証フローに進みます。
D. iOS上のApple SSOによる認証フロー authn_flow_with_applesso
-
getAuthentication()を呼び出して、認証フローを開始するか、ユーザーが既に認証されていることを確認します。
トリガー:- ユーザーが認証されておらず、現在の依頼者が少なくともSSOをサポートするMVPD上に存在する場合、presentTvProviderDialog () コールバック。 MVPDがSSOをサポートしていない場合は、クラシック認証フローが使用されます。
-
ユーザーがプロバイダーを選択すると、AccessEnabler ライブラリは、AppleのVSA フレームワークによって提供された情報を含む認証トークンを取得します。
-
setAuthenticationStatus () コールバックがトリガーされます。 この時点で、Apple SSOでユーザーを認証する必要があります。
-
[ オプション ] ユーザーが表示を許可されているリソースを確認するには、
checkPreauthorizedResources(resources)を呼び出します。resourcesパラメーターは、ユーザーの認証トークンに関連付けられた、保護されたリソースの配列です。 ユーザーのMVPDから取得した認証情報の使用の1つは、UIを装飾することです(例えば、保護されたコンテンツの横にロックされたシンボルやロック解除されたシンボルなど)。- トリガー:
preauthorizedResources()コールバック - 実行ポイント:完了した認証フローの後
- トリガー:
-
認証が成功した場合は、認証フローに進みます。
E. tvOSでのApple SSOによる認証フロー authn_flow_with_applesso_tvOS
-
getAuthentication()を呼び出して、を開始します
認証フローを選択するか、ユーザーが既に認証されていることを確認する
認証済み:
トリガー:- ユーザーが認証されておらず、現在の依頼者が少なくともSSOをサポートするMVPD上に存在する場合、
presentTvProviderDialog()コールバック。 MVPDがSSOをサポートしていない場合は、クラシック認証フローが使用されます。
- ユーザーが認証されておらず、現在の依頼者が少なくともSSOをサポートするMVPD上に存在する場合、
-
ユーザーがプロバイダーを選択すると、
status()コールバックが呼び出されます。 登録コードが提供され、AccessEnabler ライブラリが2回目の画面認証に成功するためにサーバーのポーリングを開始します。 -
提供された登録コードが2番目の画面で正常に認証するために使用された場合、
setAuthenticatiosStatus()コールバックがトリガーされます。 この時点で、Apple SSOでユーザーを認証する必要があります。 -
[ オプション ] ユーザーが表示を許可されているリソースを確認するには、
checkPreauthorizedResources(resources)を呼び出します。resourcesパラメーターは、ユーザーの認証トークンに関連付けられた、保護されたリソースの配列です。 ユーザーのMVPDから取得した認証情報の使用の1つは、UIを装飾することです(例えば、保護されたコンテンツの横にロックされたシンボルやロック解除されたシンボルなど)。-
トリガー:
preauthorizedResources()コールバック -
実行ポイント:完了した認証フローの後
-
-
認証が成功した場合は、認証フローに進みます。
ヘ。認証のフロー authz_flow
-
getAuthorization () を呼び出して、認証フローを開始します。
- 依存関係:個の有効なResourceIDがMVPDと合意されました。
- リソース IDは、他のデバイスまたはプラットフォームで使用されるものと同じである必要があり、MVPD間で同じになります。 リソース IDについて詳しくは、 リソース識別子を参照してください
-
認証と認証を検証する。
-
getAuthorization () 呼び出しが成功した場合:ユーザーには有効なAuthN トークンとAuthZ トークンがあります(ユーザーは認証され、要求されたメディアを視聴する権限を持っています)。
-
getAuthorization () が失敗した場合:スローされた例外を調べて、そのタイプ(AuthN、AuthZなど)を判断します。
- 認証(AuthN)エラーの場合は、認証フローを再起動します。
- 認証(AuthZ)エラーの場合、ユーザーは要求されたメディアを視聴する権限がなく、何らかのエラーメッセージがユーザーに表示されます。
- 他のタイプのエラー(接続エラー、ネットワークエラーなど)が発生した場合 その後、ユーザーに適切なエラーメッセージを表示します。
-
-
ショートメディアトークンを検証します。
Adobe Pass Authentication Media Token Verifier ライブラリを使用して、上記のgetAuthorization () 呼び出しから返された短期間有効なメディアトークンを検証します。- 検証が成功した場合:要求されたメディアをユーザーに対して再生します。
- 検証が失敗した場合:AuthZ トークンが無効で、メディアリクエストが拒否され、エラーメッセージがユーザーに表示されます。
-
通常のアプリケーションフローに戻ります。
G. メディアのフローの表示 media_flow
-
ユーザーが表示するメディアを選択します。
-
メディアは保護されていますか? アプリケーションは、選択したメディアが保護されているかどうかを確認します。
-
選択したメディアが保護されている場合、アプリケーションは上記の認証フローを開始します。
-
選択したメディアが保護されていない場合は、のメディアを再生します
ユーザー:
-
H. Apple SSOを使用しないログアウトフロー logout_flow_wo_AppleSSO
-
ユーザーをログアウトするには、
logout()に電話してください。 AccessEnablerは、キャッシュされたすべての値とトークンをクリアします。 キャッシュをクリアした後、AccessEnablerはサーバーサイドのセッションをクリーンアップするためにサーバーコールを実行します。 サーバー呼び出しはIdPへのSAML リダイレクトにつながる可能性があるため(これにより、IdP側でセッションクリーンアップが可能になります)、この呼び出しはすべてのリダイレクトに従う必要があります。 このため、この呼び出しは、UIWebView/WKWebViewまたはSFSafariViewController コントローラ内で処理する必要があります。a. 認証ワークフローと同じパターンに従って、AccessEnabler ドメインは、
navigateToUrl:またはnavigateToUrl:useSVC:コールバックを介してUI アプリケーションレイヤーに対して、UIWebView/WKWebViewまたはSFSafariViewController コントローラーを作成し、コールバックのurlパラメーターで指定されたURLを読み込むよう指示します。 これは、バックエンドサーバー上のログアウトエンドポイントのURLです。b. アプリケーションは、
UIWebView/WKWebView or SFSafariViewControllerコントローラーのアクティビティを監視し、特定のカスタム URLを複数のリダイレクトを経由して読み込む瞬間を検出する必要があります。 この特定のカスタム URLは実際には無効であり、コントローラが実際に読み込むことを意図していないことに注意してください。 ログアウトフローが完了し、UIWebView/WKWebViewまたはSFSafariViewControllerコントローラーを安全に閉じることができることを示すシグナルとしてのみ、アプリケーションで解釈する必要があります。 コントローラーがこの特定のカスタム URLを読み込むと、アプリケーションはUIWebView/WKWebView or SFSafariViewControllerコントローラーを閉じ、AccessEnablerのhandleExternalURL:urlAPI メソッドを呼び出す必要があります。SFSafariViewControllerコントローラーを使用する必要がある場合、特定のカスタム URLはapplication's custom scheme(例えば、adbe.u-XFXJeTSDuJiIQs0HVRAg://adobe.com)によって定義されます。それ以外の場合、この特定のカスタム URLはADOBEPASS_REDIRECT_URL定数(つまり、adobepass://ios.app)によって定義されます。note NOTE ログアウトフローは、UIWebView/WKWebViewまたはSFSafariViewControllerを何らかの方法で操作する必要がないという点で、認証フローとは異なります。 UI アプリケーションレイヤーでは、UIWebView/WKWebViewまたはSFSafariViewControllerを使用して、すべてのリダイレクトに従っていることを確認します。 したがって、ログアウトプロセス中にコントローラを非表示にすることは可能です(推奨されます)。
I. Apple SSOによるログアウトフロー logout_flow_with_AppleSSO
- ユーザーをログアウトするには、
logout()に電話してください。 - status () コールバックがID VSA203で呼び出されます。
- また、システム設定からログインするようにユーザーに指示する必要があります。 そうしないと、アプリケーションが再起動したときに再認証が行われます。