(レガシー)クライアント情報(デバイス、接続、アプリケーション)の引き継ぎ pass-client-info
範囲 pass-client-info-scope
このドキュメントでは、プログラマーアプリケーションからAdobe Pass Authentication REST APIまたはSDKにクライアント情報(デバイス、接続、アプリケーション)を渡すための詳細とクックブックを集計します。
顧客情報を提供する利点は次のとおりです。
- 一部のデバイスタイプおよびHBAをサポートできるMVPDの場合に、ホームベース認証(HBA)を適切に有効にする機能。
- 一部のデバイスタイプの場合にTTLを適切に適用する機能(例えば、TV接続デバイスの認証セッション用に長いTTLを設定する)。
- エンタイトルメントサービスモニタリング(ESM)を使用して、デバイスタイプをまたいで分割されたレポートでビジネス指標を適切に集計する機能。
- 様々なビジネスルールを適切に適用する機能(例: 劣化)が発生する可能性があります。
概要 pass-client-info-overview
クライアント情報は次の要素で構成されます。
- ユーザーがプログラマーコンテンツを使用しようとしているデバイスのハードウェア属性とソフトウェア属性に関する デバイス 情報。
- ユーザーがAdobe Pass Authentication サービスやProgrammer サービス(サーバー間の実装など)に接続しているデバイスの接続属性に関する Connection 情報。
- ユーザーがプログラマーのコンテンツを利用しようとしている場所から登録済みアプリケーションに関する アプリケーション 情報。
クライアント情報は、次の表に示すキーで構築されたJSON オブジェクトです。
primaryHardwareType、osName、osFamily、browserName、browserVendor、connectionSecure。API参照 api-ref
この節では、Adobe Pass Authentication REST APIまたはSDKを使用する場合のクライアント情報の処理を担当するAPIについて説明します。
REST API rest-api
Adobe Pass Authentication servicesでは、次の方法でクライアント情報を受信できます。
- ヘッダーとして:“X-Device-Info”
- クエリパラメーターとして:“device_info”
- post パラメーターとして:“device_info”
SDK
JavaScript SDK js-sdk
AccessEnabler JavaScript SDKは、デフォルトでクライアント情報JSON オブジェクトを作成します。このオブジェクトは、上書きされない限り、Adobe Pass Authentication サービスに渡されます。
AccessEnabler JavaScript SDKでは、setRequestorのapplicationId オプション パラメーターを使用して、クライアント情報JSON オブジェクトの「applicationId」キーのみを上書きすることがサポートされています。
applicationId パラメーター値は、プレーンテキスト文字列値である必要があります。プログラマーアプリケーションがapplicationIdを渡すことにした場合、残りのクライアント情報キーはAccessEnabler JavaScript SDKによって計算されます。
iOS/tvOS SDK ios-tvos-sdk
AccessEnabler iOS/tvOS SDKは、デフォルトでクライアント情報JSON オブジェクトを作成します。このオブジェクトは、上書きされない限り、Adobe Pass Authentication サービスに渡されます。
AccessEnabler iOS/tvOS SDKでは、setOptionsのdevice_info パラメーターを使用して クライアント情報JSON オブジェクト全体を 上書きすることがサポートされています。
Android/FireOS SDK and-fire-os-sdk
AccessEnabler Android/FireOS SDKは、デフォルトでクライアント情報JSON オブジェクトをビルドします。このオブジェクトは、上書きされない限り、Adobe Pass Authentication サービスに渡されます。
AccessEnabler Android/FireOS SDKでは、setOptionsの/setOptionsのdevice_info パラメーターを使用して、クライアント情報JSON オブジェクト全体を上書きすることがサポートされています。
device_info パラメーター値は、Base64 エンコードされた文字列値である必要があります。Cookbooks cookbooks
この節では、異なるデバイスタイプの場合にクライアント情報JSON オブジェクトを構築するためのクックブックを紹介します。
Android android
デバイス情報は、次のように構築できます。
接続情報は、次の方法で作成できます。
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> getSystemService(Context.CONNECTIVITY_SERVICE).getActiveNetworkInfo().getType()"WIFI","BLUETOOTH","MOBILE","ETHERNET","VPN","DUMMY","MOBILE_DUN","WIMAX","notAccessible"アプリケーション情報は、次の方法で作成できます。
サンプルコード
private JSONObject computeClientInformation() {
String LOGGING_TAG = "DefineClass.class";
JSONObject clientInformation = new JSONObject();
String connectionType;
try {
ConnectivityManager cm = (ConnectivityManager) getContext().getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (activeNetwork != null && activeNetwork.isConnectedOrConnecting()) {
switch (activeNetwork.getType()) {
case ConnectivityManager.TYPE_WIFI: {
connectionType = "WIFI";
break;
}
case ConnectivityManager.TYPE_BLUETOOTH: {
connectionType = "BLUETOOTH";
break;
}
case ConnectivityManager.TYPE_MOBILE: {
connectionType = "MOBILE";
break;
}
case ConnectivityManager.TYPE_ETHERNET: {
connectionType = "ETHERNET";
break;
}
case ConnectivityManager.TYPE_VPN: {
connectionType = "VPN";
break;
}
case ConnectivityManager.TYPE_DUMMY: {
connectionType = "DUMMY";
break;
}
case ConnectivityManager.TYPE_MOBILE_DUN: {
connectionType = "MOBILE_DUN";
break;
}
case ConnectivityManager.TYPE_WIMAX: {
connectionType = "WIMAX";
break;
}
default:
connectionType = ConnectivityManager.EXTRA_OTHER_NETWORK_INFO;
}
} else {
connectionType = ConnectivityManager.EXTRA_NO_CONNECTIVITY;
}
} catch (Exception e) {
connectionType = "notAccessible";
}
try {
clientInformation.put("model",Build.MODEL);
clientInformation.put("vendor", Build.BRAND);
clientInformation.put("manufacturer",Build.MANUFACTURER);
clientInformation.put("version",Build.DEVICE);
clientInformation.put("osName","Android");
clientInformation.put("osVersion",Build.VERSION.RELEASE);
clientInformation.put("connectionType",connectionType);
clientInformation.put("applicationId","CNN");
} catch (JSONException e) {
Log.e(LOGGING_TAG, e.getMessage());
}
return Base64.encodeToString(clientInformation.toString().getBytes(), Base64.NO_WRAP);
}
FireTV fire-tv
デバイス情報は、次のように構築できます。
接続情報は、次の方法で作成できます。
アプリケーション情報は、次の方法で作成できます。
iOS/tvOS ios-tvos
デバイス情報は、次のように構築できます。
接続情報は、次の方法で作成できます。
アプリケーション情報は、次の方法で作成できます。
サンプルコード
+ (NSString *)computeClientInformation {
struct utsname u;
uname(&u);
NSString *hardware = [NSString stringWithCString:u.machine encoding:NSUTF8StringEncoding];
UIDevice *device = [UIDevice currentDevice];
NSString *deviceType;
switch (UI_USER_INTERFACE_IDIOM()) {
case UIUserInterfaceIdiomPhone:
deviceType = @"MobilePhone";
break;
case UIUserInterfaceIdiomPad:
deviceType = @"Tablet";
break;
case UIUserInterfaceIdiomTV:
deviceType = @"TV";
break;
default:
deviceType = @"Unknown";
}
CGRect screenRect = [[UIScreen mainScreen] bounds];
NSNumber *screenWidth = @((float) screenRect.size.width);
NSNumber *screenHeight = @((float) screenRect.size.height);
Reachability *reachability = [Reachability reachabilityForInternetConnection];
[reachability startNotifier];
NetworkStatus status = [reachability currentReachabilityStatus];
NSString *connectionType;
if (status == NotReachable) {
connectionType = @"notConnected";
} else if (status == ReachableViaWiFi) {
connectionType = @"WiFi";
} else if (status == ReachableViaWWAN) {
connectionType = @"cellular";
}
NSMutableDictionary *clientInformation = [@{
@"type": deviceType,
@"model": device.model,
@"vendor": @"Apple",
@"manufacturer": @"Apple",
@"version": [hardware stringByReplacingOccurrencesOfString:device.model withString:@""],
@"osName": device.systemName,
@"osVersion": device.systemVersion,
@"displayWidth": screenWidth,
@"displayHeight": screenHeight,
@"connectionType": connectionType,
@"applicationId": @"CNN"
} mutableCopy];
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:clientInformation options:NSJSONWritingPrettyPrinted error:&error];
NSString *base64Encoded = [jsonData base64EncodedStringWithOptions:0];
return base64Encoded;
}
六区 roku
デバイス情報は、次のように構築できます。
接続情報は、次の方法で作成できます。
アプリケーション情報は、次の方法で作成できます。
XBOX 1/360 xbox
デバイス情報は、次のように構築できます。
接続情報は、次の方法で作成できます。
アプリケーション情報は、次の方法で作成できます。
リソース