Transmissão de informações do cliente (dispositivo, conexão e aplicativo) pass-client-info
Escopo pass-client-info-scope
Este documento agrega detalhes e manuais para transmitir informações do cliente (dispositivo, conexão e aplicativo) de um aplicativo do programador para APIs REST de autenticação do Adobe Pass ou SDKs.
Os benefícios de fornecer informações aos clientes são:
- A capacidade de habilitar adequadamente a Autenticação da Base Inicial (HBA) no caso de alguns tipos de dispositivos e MVPDs que possam oferecer suporte a HBA.
- A capacidade de aplicar corretamente TTLs no caso de alguns tipos de dispositivos (por exemplo, configurar TTLs mais longos para sessões de autenticação em dispositivos conectados a TV).
- A capacidade de agregar adequadamente as métricas de negócios em relatórios detalhados entre tipos de dispositivos usando o ESM (Entitlement Service Monitoring, monitoramento do serviço de qualificação).
- Desbloqueia a capacidade de aplicar corretamente várias regras de negócios (por exemplo, degradação) em tipos específicos de dispositivos.
Visão geral pass-client-info-overview
As informações do cliente consistem em:
- Dispositivo informações sobre os atributos de hardware e software do dispositivo a partir do qual o usuário está tentando consumir o conteúdo do Programador.
- Conexão informações sobre os atributos de conexão do dispositivo a partir do qual o usuário está se conectando aos serviços de Autenticação da Adobe Pass e/ou aos serviços do Programador (por exemplo, implementações de servidor para servidor).
- Informações de Aplicativo sobre o aplicativo registrado de onde o usuário está tentando consumir o conteúdo do Programador.
As informações do cliente são um objeto JSON criado com chaves apresentadas na tabela a seguir.
primaryHardwareType
, osName
, osFamily
, browserName
, browserVendor
, connectionSecure
.Referências de API api-ref
Esta seção apresenta a API responsável por manipular informações do cliente ao usar as APIs REST de autenticação da Adobe Pass ou SDKs.
REST API rest-api
Os serviços de Autenticação da Adobe Pass oferecem suporte para o recebimento de informações do cliente das seguintes maneiras:
- Como um cabeçalho : "X-Device-Info"
- Como um parâmetro de consulta: "device_info"
- Como um parâmetro de postagem: "device_info"
SDK
JAVASCRIPT SDK js-sdk
O SDK do JavaScript do AccessEnabler cria por padrão um objeto JSON de informações do cliente, que será passado para os serviços de autenticação da Adobe Pass, a menos que seja substituído.
O SDK JavaScript do AccessEnabler oferece suporte a substituição somente da chave "applicationId" do objeto JSON de informações do cliente por meio do parâmetro de opções applicationId de setRequestor.
applicationId
deve ser um valor de cadeia de caracteres de texto sem formatação.Se o aplicativo Programmer decidir passar o applicationId, o restante das chaves de informações do cliente ainda será calculado pelo SDK JavaScript do AccessEnabler.
iOS/tvOS SDK ios-tvos-sdk
O SDK iOS/tvOS do AccessEnabler cria por padrão um objeto JSON de informações do cliente, que será passado para os serviços de autenticação da Adobe Pass, a menos que seja substituído.
O SDK iOS/tvOS do AccessEnabler oferece suporte à substituição do objeto JSON de informações do cliente inteiro por meio do parâmetro device_info de setOptions.
Android/FireOS SDK and-fire-os-sdk
O SDK do Android/FireOS AccessEnabler
compila por padrão um objeto JSON de informações do cliente, que será passado para os serviços de Autenticação da Adobe Pass, a menos que seja substituído.
O SDK Android/FireOS AccessEnabler
oferece suporte à substituição do objeto JSON de todas as informações do cliente por meio do parâmetro device_info
de setOptions's/setOptions.
device_info
deve ser um valor de Cadeia de Caracteres Base64 codificado.device_info
, todas as chaves de informações do cliente computadas pelo SDK Android/FireOS AccessEnabler
serão substituídas. Portanto, é muito importante calcular e transmitir os valores para o maior número possível de chaves. Para obter mais detalhes sobre a implementação, consulte a tabela Visão geral e o guia do Android e FireOS.Cookbooks cookbooks
Esta seção apresenta um guia para criar o objeto JSON de informações do cliente no caso de diferentes tipos de dispositivos.
Android android
As informações do dispositivo podem ser construídas da seguinte maneira:
As informações de conexão podem ser construídas da seguinte maneira:
<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"
As informações do aplicativo podem ser construídas da seguinte maneira:
Código de exemplo
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
As informações do dispositivo podem ser construídas da seguinte maneira:
As informações de conexão podem ser construídas da seguinte maneira:
As informações do aplicativo podem ser construídas da seguinte maneira:
- classe pública Build na documentação dos desenvolvedores do Android.
- Identificando dispositivos FireTV
iOS/tvOS ios-tvos
As informações do dispositivo podem ser construídas da seguinte maneira:
As informações de conexão podem ser construídas da seguinte maneira:
As informações do aplicativo podem ser construídas da seguinte maneira:
Código de exemplo
+ (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 roku
As informações do dispositivo podem ser construídas da seguinte maneira:
As informações de conexão podem ser construídas da seguinte maneira:
As informações do aplicativo podem ser construídas da seguinte maneira:
XBOX 1/360 xbox
As informações do dispositivo podem ser construídas da seguinte maneira:
As informações de conexão podem ser construídas da seguinte maneira:
As informações do aplicativo podem ser construídas da seguinte maneira:
Recursos