(従来の) Dynamic Client Registration を使用したAndroid SDK android-sdk-with-dynamic-client-registration
概要 Intro
Android AccessEnabler SDK for Androidは、セッション Cookie を使用せずに認証を有効にするように変更されました。 cookie へのアクセスを制限するブラウザーが増えているので、認証を許可するには別の方法を使用する必要があります。
Androidの場合、Chromeのカスタムタブを使用すると、他のアプリケーションからの Cookie へのアクセスが制限されます。
Android SDK 3.0.0 には次が導入されています。
- dynamic client registration は、署名済みリクエスター ID とセッション cookie 認証に基づいて、現在のアプリ登録メカニズムを置き換えます
- Chrome認証フローのカスタムタブ
動的なクライアント登録 DCR
Android SDK v3.0 以降では、Dynamic Client Registration Overview で定義されている Dynamic Client Registration 手順を使用します。
機能デモ Demo
機能のコンテキストを詳しく説明する このウェビナー をご覧ください。これには、TVE ダッシュボードを使用してソフトウェアステートメントを管理する方法と、Android SDKの一部としてAdobeから提供されるデモアプリケーションを使用して生成されたステートメントをテストする方法のデモが含まれています。
API の変更点 API
Factory.getInstance
説明: Access Enabler オブジェクトをインスタンス化します。 アプリケーション・インスタンスごとに 1 つの Access Enabler インスタンスが必要です。
AccessEnablerException をスロー
提供: v3.0 以降
パラメーター:
- appContext:Android アプリケーションコンテキスト
- softwareStatement: TVE ダッシュボードから取得された値。または string.xml で「software_statement」が設定されている場合は null
- redirectUrl:一意の URL です。TVE ダッシュボードに明示的に追加された、逆順のドメインの 1 つです。string.xml で redirect_uri」が設定されている場合は null になります。
注意:無効な softwareStatement または redirectUrl は、アプリケーションが AccessEnabler を初期化しないか、アプリケーションをAdobe Pass認証および認証用に登録します。
注意:strings.xml の redirectUrl パラメーターまたは redirect_uri は、逆順でアプリケーションに対して TVE ダッシュボードで追加されたドメインの値にする必要があります(例:TVE ダッシュボードで追加されたドメイン「adobe.com」の場合、redirectUrl は「com.adobe」にする必要があります)。
setRequestor
説明: チャネルの ID を確立します。 各チャネルには、Adobe Pass Authentication System のAdobeへの登録時に一意の ID が割り当てられます。 SSO およびリモート・トークンを処理する場合、アプリケーションがバックグラウンドにある場合に認証状態が変更される可能性があります。アプリケーションがフォアグラウンドになると、システム状態と同期するために setRequestor を再度呼び出すことができます(SSO が有効な場合はリモート・トークンを取得し、その間にログアウトが発生した場合はローカル・トークンを削除します)。
サーバー応答には、MVPD のリストと、チャネルの ID に添付されたいくつかの設定情報が含まれています。 サーバ応答は、アクセス イネーブラ コードによって内部的に使用されます。 setRequestorComplete () コールバックを使用すると、操作のステータス(SUCCESS/FAIL)のみがアプリケーションに表示されます。
urls パラメーターを使用しない場合、生成されるネットワーク呼び出しは、デフォルトのサービスプロバイダー URL (Adobe リリース/実稼動環境)をターゲットにします。
urls パラメーターに値を指定すると、結果として得られるネットワーク呼び出しは、urls パラメーターで指定されるすべての URL をターゲットにします。 すべての設定要求が、別々のスレッドで同時にトリガーされます。 MVPD のリストをコンパイルする場合は、最初のレスポンダーが優先されます。 Access Enabler は、リスト内の各MVPDについて、関連するサービス プロバイダの URL を記憶します。 以降のすべての使用権限リクエストは、設定段階でターゲット MVPDとペアになっていた、サービスプロバイダーに関連付けられた URL に送られます。
public void setRequestor(String requestorId)提供: v3.0 以降
public void setRequestor(String requestorId, ArrayList<String> urls)提供: v3.0 以降
パラメーター:
- requestorID:チャネルに関連付けられた一意の ID。 最初にAdobe Pass Authentication サービスに登録したときに、Adobeによって割り当てられた一意の ID をサイトに渡します。
- urls:オプションのパラメーターです。デフォルトでは、Adobe サービスプロバイダーが使用されます http://sp.auth.adobe.com/。 この配列を使用すると、Adobeが提供する認証サービスと承認サービスのエンドポイントを指定できます(デバッグ目的で別のインスタンスが使用される場合があります)。 これを使用して、複数のAdobe Pass Authentication サービスプロバイダーインスタンスを指定できます。 その場合、MVPDのリストは、すべてのサービスプロバイダーのエンドポイントで構成されます。 各MVPDは、最速のサービスプロバイダー(最初に応答し、そのMVPDをサポートするプロバイダー)に関連付けられます。
非推奨(廃止予定):
- signedRequestorID:秘密鍵でデジタル署名されたリクエスター ID のコピー。 .
コールバックがトリガーされました: setRequestorComplete()
ログアウト
説明: このメソッドを使用して、ログアウトフローを開始します。 ログアウトは、ユーザーがAdobe PassMVPDサーバーと認証サーバーの両方からログアウトする必要があるために、一連の HTTP リダイレクト操作の結果です。 その結果、このフローでは、ログアウトを実行するための ChromeCustomTab ウィンドウが開きます。
提供: v3.0 以降
パラメーター: なし
コールバックがトリガーされました: setAuthenticationStatus()
プログラマ実装フロー Progr
1. アプリケーションの登録
a. software_statement と redirect_uri をAdobe Passから取得する(TVE Dashboard)
b. これらの値をAdobe Pass SDKに渡す方法は 2 つあります。
strings.xml に次を追加します。
<string name="software_statement">[softwarestatement value]</string>
<string name="redirect_uri">application_url.com</string>
AccessEnabler.getInstance (appContext,softwareStatement,
redirectUrl)
2. アプリケーションの設定
a. setRequestor (requestor_id)
SDKは次の操作を実行します。
-
アプリケーションを登録:software_statement を使用して、SDKは client_id、client_secret、client_id_issued_at、redirect_uris、grant_types を取得します。 この情報は、アプリケーションの内部ストレージに保存されます。
-
client_id、client_secret および grant_type="client_credentials を使用して、 access_token"を取得します。 この access_token は、SDKがAdobe Pass サーバーに対して行う各コールで使用されます
トークンエラー応答:
- MVPDでパッシブ認証が必要な場合は、Chrome カスタムタブが開き、そのMVPDでパッシブに実行され、完了すると閉じられます
b. checkAuthentication ()
- true:認証に移動します
- false :「MVPDを選択」に移動します。
c. getAuthentication :SDKは、呼び出しパラメーターに access_token を含めます
- mvpd remembered : setSelectedProvider (mvpd_id)に移動します
- mvpd が選択されていません:displayProviderDialog
- mvpd selected :setSelectedProvider (mvpd_id)に移動します
d. setSelectedProvider
- mvpd_id 認証 URL は、ChromeCustomTabs に読み込まれる
- ログイン成功:delegate.setAuthenticationStatus (成功)
- ログインがキャンセルされました:MVPDの選択をリセット
- 認証が完了したときにキャプチャするための URL スキームが「adobepass://redirect_uri」として確立されています
e. get/checkAuthorization :SDKは、ヘッダーに Authorization:Bearer access_token として access_token を含めます
- 認証に成功した場合、
メディアトークン
f. ログアウト :
- SDKによって、現在の要求者の有効なトークンが削除されます(SSO を介さずに他のアプリケーションによって取得された認証は有効なままです)
- SDKは、mvpd_id ログアウトエンドポイントに到達するために、Chromeのカスタムタブを開きます。 完了すると、Chromeのカスタムタブは閉じられます
- ログアウトが完了した瞬間をキャプチャするために、URL スキームは「adobepass://logout」として確立されます
- logout は、sendTrackingData (new Event (EVENT_LOGOUT,USER_NOT_AUTHENTICATED_ERROR)と callback : setAuthenticationStatus (0,"Logout")をトリガーにします。
メモ: 各呼び出しには access_token が必要なため 以下のエラーコードがSDKで処理されます。