Pasar información del cliente (dispositivo, conexión y aplicación) pass-client-info
Ámbito pass-client-info-scope
Este documento agrega detalles y libros de cocina para pasar información del cliente (dispositivo, conexión y aplicación) desde una aplicación de programador a las API de REST de autenticación de Adobe Pass o a los SDK.
Las ventajas de proporcionar información al cliente son las siguientes:
- La capacidad de habilitar correctamente la autenticación de base doméstica (HBA) en el caso de algunos tipos de dispositivos y MVPD que pueden admitir HBA.
- La capacidad de aplicar correctamente los TTL en el caso de algunos tipos de dispositivos (por ejemplo, configurar TTL más largos para sesiones de autenticación en dispositivos conectados a TV).
- La capacidad de acumular correctamente métricas empresariales en informes desglosados por tipo de dispositivo mediante la Monitorización del servicio de derecho (ESM).
- Desbloquea la capacidad de aplicar correctamente varias reglas empresariales (por ejemplo, degradación) en tipos de dispositivos específicos.
Información general pass-client-info-overview
La información del cliente consta de:
- Dispositivo contiene información sobre los atributos de hardware y software del dispositivo desde el que el usuario intenta consumir el contenido del programador.
- Conexión información sobre los atributos de conexión del dispositivo desde el que el usuario se conecta a los servicios de autenticación de Adobe Pass o a los servicios del programador (por ejemplo, implementaciones servidor a servidor).
- Aplicación información sobre la aplicación registrada desde la que el usuario intenta consumir el contenido del programador.
La información del cliente es un objeto JSON creado con claves presentadas en la siguiente tabla.
primaryHardwareType
, osName
, osFamily
, browserName
, browserVendor
, connectionSecure
.Referencias de API api-ref
Esta sección presenta la API responsable de administrar la información del cliente cuando se utilizan las API de REST de autenticación de Adobe Pass o los SDK.
API DE REST rest-api
Los servicios de autenticación de Adobe Pass admiten la recepción de la información del cliente de las siguientes maneras:
- Como encabezado: "X-Device-Info"
- Como parámetro de consulta: "device_info"
- Como parámetro de publicación: "device_info"
SDK
SDK de JavaScript js-sdk
El SDK de JavaScript de AccessEnabler crea de forma predeterminada un objeto JSON de información del cliente, que se pasará a los servicios de autenticación de Adobe Pass, a menos que se anule.
El SDK de JavaScript de AccessEnabler admite anular solamente la clave "applicationId" del objeto JSON de información del cliente mediante el parámetro de opciones setRequestor applicationId.
applicationId
debe ser un valor de cadena de texto sin formato.Si la aplicación Programador decide pasar el applicationId, el SDK de JavaScript de AccessEnabler seguirá calculando el resto de las claves de información del cliente.
SDK de iOS/tvOS ios-tvos-sdk
El SDK de AccessEnabler para iOS/tvOS crea de forma predeterminada un objeto JSON de información del cliente, que se pasará a los servicios de autenticación de Adobe Pass, a menos que se anule.
El SDK de AccessEnabler para iOS/tvOS admite que se anule todo el objeto JSON de información del cliente a través del parámetro device_info de setOptions.
SDK de Android/FireOS and-fire-os-sdk
El SDK de Android/FireOS AccessEnabler
crea de forma predeterminada un objeto JSON de información de cliente, que se pasará a los servicios de autenticación de Adobe Pass, a menos que se anule.
El SDK de Android/FireOS AccessEnabler
admite la anulación del objeto JSON de información de cliente completo a través del parámetro device_info
de setOptions/setOptions.
device_info
debe ser un valor de cadena codificado en Base64.device_info
, se anularán todas las claves de información de cliente calculadas por el SDK Android/FireOS de AccessEnabler
. Por lo tanto, es muy importante calcular y pasar los valores para tantas claves como sea posible. Para obtener más información sobre la implementación, consulte la tabla Información general y los manuales de Android y FireOS.Libros cookbooks
Esta sección presenta un libro de cocina para crear el objeto JSON de información del cliente en el caso de diferentes tipos de dispositivos.
Android android
La información del dispositivo se puede construir de la siguiente manera:
La información de conexión se puede construir de la siguiente manera:
<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"
La información de la aplicación se puede construir de la siguiente manera:
Código de muestra
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
La información del dispositivo se puede construir de la siguiente manera:
La información de conexión se puede construir de la siguiente manera:
La información de la aplicación se puede construir de la siguiente manera:
- clase pública Build en la documentación de desarrolladores de Android.
- Identificando dispositivos FireTV
iOS/tvOS ios-tvos
La información del dispositivo se puede construir de la siguiente manera:
La información de conexión se puede construir de la siguiente manera:
La información de la aplicación se puede construir de la siguiente manera:
Código de muestra
+ (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
La información del dispositivo se puede construir de la siguiente manera:
La información de conexión se puede construir de la siguiente manera:
La información de la aplicación se puede construir de la siguiente manera:
XBOX 1/360 xbox
La información del dispositivo se puede construir de la siguiente manera:
La información de conexión se puede construir de la siguiente manera:
La información de la aplicación se puede construir de la siguiente manera:
Recursos