(レガシー)事前認証
- トピック:
- 認証
概要
事前認証 API メソッドは、アプリケーションが 1 つ以上のリソースに対して事前認証の決定を取得するために使用します。 事前認証 API リクエストは、UI ヒントやコンテンツフィルタリングに使用する必要があります。 指定したリソースへのユーザーアクセスを許可する前に、実際の認証 API リクエストを行う必要があります。
事前認証 API リクエストがAdobe Pass Authentication Services によって処理される際に、予期しないエラー(ネットワークの問題、MVPD認証エンドポイントが利用できないなど)が発生した場合は、事前認証 API 応答の結果の一部として、影響を受けるリソースに関する 1 つ以上のエラー情報が個別に含まれます。
public preauthorize (request: PreauthorizeRequest, callback: AccessEnablerCallback<any>): void
説明: この手法は、アプリケーションの UI を修飾する主な目的で(例えば、ロックおよびロック解除アイコンを使用したアクセスステータスの表示)、認証されたユーザーの事前認証(情報)決定をAdobe Pass認証サービスから取得して、特定の保護されたリソースを表示するために使用します。
提供: v4.4.0 以降
パラメーター:
PreauthorizeRequest
:リクエストの定義に使用されるビルダーオブジェクトAccessEnablerCallback
:API 応答を返すために使用されるコールバックPreauthorizeResponse
:API 応答のコンテンツを返すために使用されるオブジェクト
preauthorizeRequestBuilder クラス
setResources (resources: string[]): PreauthorizeRequestBuilder
-
事前認証の決定を取得するリソースのリストを設定します。
-
事前認証 API を使用するには、これを設定する必要があります。
-
リストの各要素は、MVPDと合意する必要があるリソース ID 値またはメディア RSS フラグメントを表す文字列である必要があります。
-
このメソッドは、現在の
PreauthorizeRequestBuilder
オブジェクトインスタンス(このメソッド呼び出しの受信者)のコンテキストでのみ情報を設定します。 -
実際の
PreauthorizeRequest
を作成するには、PreauthorizeRequestBuilder
のメソッドを参照します。
build(): PreauthorizeRequest
@param {string[]}
リソース。 事前認証の決定を取得するリソースのリスト。@returns {PreauthorizeRequestBuilder}
メソッド呼び出しの受信者である、同じPreauthorizeRequestBuilder
オブジェクトインスタンスへの参照。- これは、メソッドの連鎖の作成を可能にするために行います。
disableFeatures (…features: string[]): PreauthorizeRequestBuilder
- 事前認証の決定を取得するときに無効にする機能を設定します。
- この関数は、現在の
PreauthorizeRequestBuilder
オブジェクトインスタンス(この関数呼び出しの受信者)のコンテキストでのみ情報を設定します。 - 実際の
PreauthorizeRequest
を作成するには、PreauthorizeRequestBuilder
の関数を確認します。
public func build() -> PreauthorizeRequest
@param {string[]}
機能。 無効にする機能のセット。@returns
関数呼び出しの受信者である、同じPreauthorizeRequestBuilder
オブジェクトインスタンスへの参照。- これは、関数連結の作成を可能にするために行います。
build (): PreauthorizeRequest
- 新しい
PreauthorizeRequest
オブジェクト インスタンスの参照を作成および取得します。 - このメソッドは、呼び出されるたびに新しい
PreauthorizeRequest
オブジェクトをインスタンス化します。 - このメソッドは、このメソッド呼び出しの受信者である現在の
PreauthorizeRequestBuilder
オブジェクトインスタンスのコンテキストで、事前に設定された値を使用します。 - この方法では副作用が生じないことを覚えておいてください。
- したがって、このメソッド呼び出しの受信者であるSDKのステートまたは
PreauthorizeRequestBuilder
オブジェクトインスタンスのステートは変更されません。 - つまり、同じ受信者に対してこのメソッドを連続して呼び出すと、新しい
PreauthorizeRequest
オブジェクトのインスタンスは異なりますが、呼び出し間で値が変更されていないPreauthorizeRequestBuilder
に設定されている場合は、同じ情報を持ちます。 - 指定された情報(リソースとキャッシュ)を更新する必要がない場合は、事前認証 API の複数回使用するために、PreauthorizeRequest インスタンスを再利用できます。
@returns {PreauthorizeRequest}
インターフェイス AccessEnablerCallback<T>
onResponse (result: T);
- 事前認証 API リクエストが満たされたときにSDKによって呼び出された応答コールバック。
- 結果は、成功、またはステータスを含むエラー結果です。
@param {T} result
onFailure (result: T);
- 事前認証 API リクエストを処理できなかった場合に、SDKによって呼び出されるエラーコールバック。
- 結果は、ステータスを含む失敗結果です。
@param {T} result
クラス PreauthorizeResponse
パブリックステータス:ステータス;
- 戻り値:失敗した場合の追加のステータス(状態)情報。
null
値を保持する可能性があります。
パブリック決定:決定 [];
- 戻り値:事前認証の決定のリスト。 リソースごとに 1 つの決定。
- 失敗した場合、リストは空の可能性があります。
クラスステータス
パブリックステータス:数値;
- RFC 7231 に記載されている HTTP 応答ステータスコード。
Status
がAdobe Pass Authentication Services ではなくSDKから送信される場合は、0 である可能性があります。
パブリックコード:number;
- 標準のAdobe Pass認証サービスエラーコード。
- 空の文字列または
null
の値を保持できます。
パブリックメッセージ:string;
- 詳細なメッセージ。MVPD認証エンドポイントによって提供される場合もあれば、プログラマーの劣化規則によって提供される場合もあります。
- 空の文字列または
null
の値を保持できます。
パブリックの詳細:文字列;
- 場合によっては、MVPD認証エンドポイントまたはプログラマー劣化ルールによって提供される詳細なメッセージを保持します。
- 空の文字列または
null
の値を保持できます。
public helpUrl: string;
- この状態/エラーが発生した理由と考えられる解決策に関する詳細情報にリンクする URL。
- 空の文字列または
null
の値を保持できます。
パブリックトレース:string;
- この応答の一意の ID で、より複雑なシナリオで特定の問題を特定するためにサポートに連絡する際に使用できます。
- 空の文字列または
null
の値を保持できます。
パブリックアクション:string;
-
状況を改善するための推奨アクション。
- なし:残念ながら、この問題を修正するための事前定義済みのアクションはありません。 これは、パブリック API の呼び出しが正しくない可能性があります
- 設定:TVE ダッシュボードを使用するか、サポートに連絡して、設定を変更する必要があります。
- application-registration:アプリケーションは、自分自身を再度登録する必要があります。
- 認証:ユーザーは認証または再認証する必要があります。
- authorization:ユーザーは、特定のリソースに対して認証を取得する必要があります。
- degradation:何らかの形の最適化を適用する必要があります。
- retry: リクエストを再試行すると、問題が解決する場合があります
- retry-after:指定された期間が経過した後にリクエストを再試行すると、問題が解決する場合があります。
-
空の文字列または
null
の値を保持できます。
クラスの決定
パブリック id:文字列;
- 決定が取得されたリソース ID。
public authorized:ブール値;
- 決定が成功したかどうかを示すフラグの値。
パブリックエラー:ステータス;
- エラーが発生した場合の追加のステータス(状態)情報。
null
値を保持する可能性があります。
クライアントの実装例
let accessEnablerApi = new window.AccessEnabler.AccessEnabler("software statement");
let accessEnablerModels = window.AccessEnabler.models;
// Build request
let requestBuilder = new accessEnablerModels.PreauthorizeRequest.getBuilder();
let request = requestBuilder
.setResources(["RES01", "RES02", "RES03"])
.disableFeatures("LOCAL_CACHE")
.build();
// Create callback
let callback = {
onResponse(response) {
// Handle onResponse
},
onFailure(response) {
// Handle onFailure
}
};
// Invoke call
accessEnablerApi.preauthorize(request, callback);
シナリオの例
シナリオ 1:要求されたすべてのリソースが許可された
シナリオ 2:リクエストされた一部のリソースが承認されました。
{
"decisions": [
{
"id": "RES01",
"authorized": true
},
{
"id": "RES02",
"authorized": true
},
{
"id": "RES03",
"authorized": true
}
]
}
シナリオ 3:リクエストされたリソースがすべて承認されなかった。
"'JavaScript
{
"decisions": [
{
"id": "RES01",
"authorized": true
},
{
"id": "RES02",
"authorized": false
},
{
"id": "RES03",
"authorized": true
}
]
}
"'
"'JavaScript
{
"decisions": [
{
"id": "RES01",
"authorized": true
},
{
"id": "RES02",
"authorized": false,
"error": {
"status": 403,
"code": "preauthorization_denied_by_mvpd",
"message": "MVPDは、指定されたリソースの事前認証をリクエストする際に、\"Deny\"判断をを返しました。",
"helpUrl": "https://experienceleague.adobe.com/docs/primetime/authentication/home.html",
"action" "none"
}
},
{
"id": "RES03","authorized": trueID},次の値を使用します
シナリオ 4:無効なクライアントリクエスト – リソースが指定されていません。
"'JavaScript
{
"decisions": [
{
"id": "RES01",
"authorized": false
},
{
"id": "RES02",
"authorized": false
},
{
"id": "RES03",
"authorized": false
}
}
}
"'
"'JavaScript
{
"decisions": [
{
"id": "RES01",
"authorized":false,
"error": {
"status": 403,
"code": "preauthorization_denied_by_mvpd",
"message": "MVPDは、指定されたリソースの事前認証をリクエストする際に\"Deny\"決定を返しました。",
"helpUrl": "https://experienceleague.adobe.com/docs/primetime/authentication/home.html",
"action": "none"
}
}},
{
"id": "RES02",
"authorized": false,
"error": {
"status": 403,
"code": "preauthorization_denied_by_mvpd",and"message": "MVPDは、指定されたリソースの事前認証をリクエストする際に、\"Deny\"決定を返しました。","helpUrl": "https://experienceleague.adobe.com/docs/primetime/authentication/home.html","action": "none"403",error": {preauthorization"status": 403,correct"code": "maximum_execution_time_exceeded","message": "リクエストが最大許容時間内に完了しませんでした。 リクエストを再試行すると、問題が解決する場合があります。",
"helpUrl": "https://experienceleague.adobe.com/docs/primetime/authentication/home.html",
"action": "retry"
}
}
}
}
"'
"'JavaScript
{
"status": {
"status": 400,
"code": "internal_error",
"message": "内部エラーが原因でリクエストが失敗しました。",
"details": "Required String[] パラメーター'resource'が存在しません",
"helpUrl": "https://experienceleague.adobe.com/docs/primetime/authentication/home.html",
"action": "none"
},
"decisions": []
}
"'
シナリオ 5:無効なクライアントリクエスト – 空のリソースが指定されました。
"'JavaScript
{
"status": {
"status": 412,
"code": "missing_resource",
"message": "The resource parameter is missing",
"helpUrl": "https://experienceleague.adobe.com/docs/primetime/authentication/home.html",
"action": "none"
},
"decisions": []
}
"'
シナリオ 6:ネットワークエラー。
"'JavaScript
{
"decisions": [
{
"id": "RES01",
"authorized": false,
"error": {
"status": 403,
"code": "network_received_error",
"message": "関連するパートナーサービスから応答を取得する際に読み取りエラーが発生しました。 リクエストを再試行すると、問題が解決する場合があります。",
"helpUrl": "https://experienceleague.adobe.com/docs/primetime/authentication/home.html",
"action": "retry"
}
},
{
"id": "RES02",
"authorized": false,
"error": {
"status": 403,
"code": "network_received_error",
"message": "関連するパートナーサービスから応答を取得する際に読み取りエラーが発生しました。 リクエストを再試行すると、問題が解決する場合があります。",
"helpUrl": "https://experienceleague.adobe.com/docs/primetime/authentication/home.html",
"action": "retry"
}
}
}
}
"'
シナリオ 7:有効な AuthN セッションなしで、事前承認フローが呼び出された。
"'JavaScript
{
"status": {
"status": 0,
"code": "authentication_session_missing",
"message": "このリクエストに関連付けられた認証セッションを取得できませんでした。 続行するには、サポートされているMVPDで再認証する必要があります。",
"action": "authentication"
},
"decisions": []
}
"'
シナリオ 8:setRequestor 呼び出しが完了する前に、事前承認フローが呼び出された
"'JavaScript
{
"status": {
"status": 0,
"code": "requestor_not_configured",
"message": "setRequestor API 以外の API を使用するための前提条件である、リクエスターがまだ設定されていません。",
"action": "retry"
},
"decisions": []
}
"'