Transmission des informations client (appareil, connexion et application) pass-client-info
Portée pass-client-info-scope
Ce document agrège les détails et les livres de cookie pour transmettre des informations client (appareil, connexion et application) d’une application de programmeur aux API REST d’authentification Adobe Pass ou aux SDK.
Les avantages de fournir des informations sur le client sont les suivants :
- La possibilité d’activer correctement l’authentification de base (adaptateur de bus hôte) dans le cas de certains types d’appareils et MVPD pouvant prendre en charge l’adaptateur de bus hôte.
- La possibilité d’appliquer correctement des TTL dans le cas de certains types d’appareils (par exemple, configurer des TTL plus longs pour les sessions d’authentification sur les appareils connectés à la télévision).
- La possibilité d’agréger correctement les mesures commerciales dans des rapports ventilés entre types d’appareils à l’aide du contrôle du service de droits (ESM).
- Débloque la possibilité d’appliquer correctement diverses règles de fonctionnement (par exemple, dégradation) sur des types d’appareils spécifiques.
Vue d’ensemble pass-client-info-overview
Les informations du client sont les suivantes :
- Device - Informations sur les attributs matériels et logiciels de l’appareil à partir duquel l’utilisateur tente d’utiliser le contenu du programmeur.
- Connexion informations sur les attributs de connexion de l’appareil à partir duquel l’utilisateur se connecte aux services d’authentification Adobe Pass et/ou aux services de programmeur (par exemple, implémentations serveur à serveur).
- Application informations sur l’application enregistrée à partir de laquelle l’utilisateur tente d’utiliser le contenu du programmeur.
Les informations client sont un objet JSON créé avec des clés présentées dans le tableau suivant.
primaryHardwareType
, osName
, osFamily
, browserName
, browserVendor
, connectionSecure
.Références API api-ref
Cette section présente l’API chargée de gérer les informations sur les clients lors de l’utilisation des API REST d’authentification Adobe Pass ou des SDK.
API REST rest-api
Les services d’authentification Adobe Pass prennent en charge la réception des informations client de la manière suivante :
- En tant qu’en-tête : "X-Device-Info"
- En tant que paramètre de requête : "device_info"
- En tant que paramètre post : "device_info"
SDK
SDK JAVASCRIPT js-sdk
Le SDK JavaScript AccessEnabler crée par défaut un objet JSON d’informations client, qui sera transmis aux services d’authentification Adobe Pass, sauf s’il est remplacé.
Le SDK JavaScript AccessEnabler prend en charge en remplaçant uniquement la clé "applicationId" de l’objet JSON d’informations client par le paramètre d’options applicationId de setRequestor.
applicationId
doit être une valeur String en texte brut.Si l’application de programmation décide de transmettre l’applicationId, le reste des clés d’informations client sera toujours calculé par le SDK JavaScript AccessEnabler.
SDK iOS/tvOS ios-tvos-sdk
Le SDK AccessEnabler iOS/tvOS crée par défaut un objet JSON d’informations client, qui sera transmis aux services d’authentification Adobe Pass, sauf s’il est remplacé.
Le SDK AccessEnabler iOS/tvOS prend en charge le remplacement de l’objet JSON d’informations client entier par le paramètre device_info de setOptions.
SDK Android/FireOS and-fire-os-sdk
Le SDK Android/FireOS AccessEnabler
crée par défaut un objet JSON d’informations client, qui sera transmis aux services d’authentification Adobe Pass, sauf s’il est remplacé.
Le SDK AccessEnabler
Android/FireOS prend en charge le remplacement de l’objet JSON d’informations client complet par le paramètre setOptions's/setOptions du device_info
.
device_info
doit être une valeur de chaîne Base64 encoded .device_info
, alors toutes les clés d'informations client calculées par le SDK AccessEnabler
Android/FireOS seront remplacées. Il est donc très important de calculer et de transmettre les valeurs pour autant de clés que possible. Pour plus d’informations sur l’implémentation, consultez la table Overview et le guide pas à pas Android et FireOS.Cookbooks cookbooks
Cette section présente un guide pas à pas pour créer l’objet JSON d’informations sur le client dans le cas de différents types d’appareils.
Android android
Les informations sur l’appareil peuvent être construites comme suit :
Les informations de connexion peuvent être construites comme suit :
<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"
Les informations de l’application peuvent être construites comme suit :
Exemple de code
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
Les informations sur l’appareil peuvent être construites comme suit :
Les informations de connexion peuvent être construites comme suit :
Les informations de l’application peuvent être construites comme suit :
- classe publique Build dans la documentation des développeurs Android.
- Identification des appareils FireTV
iOS/tvOS ios-tvos
Les informations sur l’appareil peuvent être construites comme suit :
Les informations de connexion peuvent être construites comme suit :
Les informations de l’application peuvent être construites comme suit :
Exemple de code
+ (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
Les informations sur l’appareil peuvent être construites comme suit :
Les informations de connexion peuvent être construites comme suit :
Les informations de l’application peuvent être construites comme suit :
XBOX 1/360 xbox
Les informations sur l’appareil peuvent être construites comme suit :
Les informations de connexion peuvent être construites comme suit :
Les informations de l’application peuvent être construites comme suit :
Resources