Trasmissione delle informazioni del client (dispositivo, connessione e applicazione) pass-client-info
Ambito pass-client-info-scope
Questo documento aggrega i dettagli e i manuali per il passaggio di informazioni client (dispositivo, connessione e applicazione) da un’applicazione Programmatore alle API REST o agli SDK di autenticazione di Adobe Pass.
I vantaggi della fornitura di informazioni ai clienti sono:
- La capacità di abilitare correttamente l'autenticazione Home Base (HBA) nel caso di alcuni tipi di dispositivi e MVPD che supportano l'HBA.
- Possibilità di applicare correttamente i TTL nel caso di alcuni tipi di dispositivi (ad esempio, configurare TTL più lunghi per le sessioni di autenticazione su dispositivi connessi alla TV).
- La possibilità di aggregare correttamente le metriche aziendali nei rapporti suddivisi per tipo di dispositivo utilizzando il monitoraggio dei servizi di adesione (ESM, Entitlement Service Monitoring).
- Sblocca la possibilità di applicare correttamente varie regole aziendali (ad es. degradazione) su tipi di dispositivi specifici.
Panoramica pass-client-info-overview
Le informazioni sul cliente sono costituite da:
- Informazioni sul dispositivo relative agli attributi hardware e software del dispositivo da cui l'utente sta tentando di utilizzare il contenuto del programmatore.
- Connessione informazioni sugli attributi di connessione del dispositivo da cui l'utente si connette ai servizi di autenticazione e/o ai servizi Programmer di Adobe Pass (ad esempio, implementazioni server-to-server).
- Applicazione informazioni sull'applicazione registrata da cui l'utente sta tentando di utilizzare il contenuto del programmatore.
Le informazioni client sono un oggetto JSON creato con le chiavi presentate nella tabella seguente.
primaryHardwareType
, osName
, osFamily
, browserName
, browserVendor
, connectionSecure
.Riferimenti API api-ref
Questa sezione descrive l’API responsabile della gestione delle informazioni client quando si utilizzano le API REST o gli SDK per l’autenticazione di Adobe Pass.
API REST rest-api
I servizi di autenticazione di Adobe Pass supportano la ricezione delle informazioni client nei modi seguenti:
- Come intestazione: "X-Device-Info"
- Come parametro query: "device_info"
- Come parametro post: "device_info"
SDK
SDK per JavaScript js-sdk
L’SDK di JavaScript per AccessEnabler crea per impostazione predefinita un oggetto JSON di informazioni client, che verrà passato ai servizi di autenticazione di Adobe Pass, a meno che non venga sostituito.
L'SDK di JavaScript per AccessEnabler supporta l'override solo della chiave "applicationId" dall'oggetto JSON delle informazioni client tramite il parametro applicationId delle opzioni setRequestor.
applicationId
deve essere un valore String di testo normale.Se l'applicazione Programmer decide di passare l'applicationId, le altre chiavi di informazioni client verranno comunque calcolate dall'SDK di AccessEnabler JavaScript.
SDK per iOS/tvOS ios-tvos-sdk
L’SDK iOS/tvOS di AccessEnabler crea per impostazione predefinita un oggetto JSON di informazioni client, che verrà passato ai servizi di autenticazione di Adobe Pass, a meno che non venga sostituito.
L'SDK iOS/tvOS di AccessEnabler supporta l'override dell'intero oggetto JSON delle informazioni client tramite il parametro device_info di setOptions.
SDK per Android/FireOS and-fire-os-sdk
L'SDK Android/FireOS AccessEnabler
crea per impostazione predefinita un oggetto JSON di informazioni client, che verrà passato ai servizi di autenticazione di Adobe Pass, a meno che non venga sostituito.
L'SDK di Android/FireOS AccessEnabler
supporta l'override dell'intero oggetto JSON delle informazioni client tramite il parametro device_info
di setOptions's/setOptions.
device_info
deve essere un valore stringa Base64 codificato.device_info
, tutte le chiavi di informazioni client calcolate dall'SDK Android/FireOS AccessEnabler
verranno ignorate. Pertanto, è molto importante calcolare e trasmettere i valori per il maggior numero possibile di chiavi. Per ulteriori dettagli sull'implementazione, consulta la tabella Panoramica e il manuale di istruzioni Android e FireOS.Cookbook cookbooks
Questa sezione presenta un manuale per la creazione dell’oggetto JSON delle informazioni client in caso di diversi tipi di dispositivi.
Android android
Le informazioni sul dispositivo possono essere costruite nel modo seguente:
Le informazioni di connessione possono essere costruite nel modo seguente:
<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"
Le informazioni sull'applicazione possono essere costruite nel modo seguente:
Codice di esempio
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
Le informazioni sul dispositivo possono essere costruite nel modo seguente:
Le informazioni di connessione possono essere costruite nel modo seguente:
Le informazioni sull'applicazione possono essere costruite nel modo seguente:
- classe pubblica Build nella documentazione per gli sviluppatori di Android.
- Identificazione dispositivi FireTV
iOS/tvOS ios-tvos
Le informazioni sul dispositivo possono essere costruite nel modo seguente:
Le informazioni di connessione possono essere costruite nel modo seguente:
Le informazioni sull'applicazione possono essere costruite nel modo seguente:
Codice di esempio
+ (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
Le informazioni sul dispositivo possono essere costruite nel modo seguente:
Le informazioni di connessione possono essere costruite nel modo seguente:
Le informazioni sull'applicazione possono essere costruite nel modo seguente:
XBOX 1/360 xbox
Le informazioni sul dispositivo possono essere costruite nel modo seguente:
Le informazioni di connessione possono essere costruite nel modo seguente:
Le informazioni sull'applicazione possono essere costruite nel modo seguente:
Risorse