(Hérité) Transmission des informations client (appareil, connexion et application) pass-client-info
Champ d’application pass-client-info-scope
Ce document agrège les détails et les cookies pour transmettre les informations du client (appareil, connexion et application) d’une application de programmation aux API REST d’authentification Adobe Pass ou aux SDK.
Les avantages de fournir des renseignements sur les clients sont les suivants :
- Possibilité d’activer correctement l’authentification de base d’accueil (HBA) dans le cas de certains types d’appareils et MVPD qui peuvent prendre en charge les HBA.
- La possibilité d’appliquer correctement des TTL dans le cas de certains types d’appareils (par exemple, configurer des TTL plus longues pour les sessions d’authentification sur les appareils connectés à la télévision).
- Possibilité d’agréger correctement les mesures commerciales dans des rapports répartis entre les types d’appareils à l’aide de la surveillance du service de droit (ESM).
- Débloque la possibilité d’appliquer correctement diverses règles métier (par exemple, dégradation) sur des types d’appareils spécifiques.
Vue d’ensemble pass-client-info-overview
Les informations sur le client se composent des éléments suivants :
- Appareil informations sur les attributs matériels et logiciels de l’appareil d’où l’utilisateur tente de consommer 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 programmation (implémentations serveur à serveur, par exemple).
- Application informations sur l’application enregistrée à partir de laquelle l’utilisateur tente d’utiliser le contenu du programmeur.
Les informations du client sont un objet JSON créé avec les clés présentées dans le tableau suivant.
primaryHardwareType
, osName
, osFamily
, browserName
, browserVendor
, connectionSecure
.Références d’API api-ref
Cette section présente l’API chargée de gérer les informations client 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 du client des manières suivantes :
- 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
JavaScript SDK 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 si vous le remplacez.
Le SDK JavaScript AccessEnabler prend en charge en remplaçant uniquement la clé « applicationId » de l’objet JSON d’informations client via le paramètre d’options applicationId de setRequestor.
applicationId
doit être une valeur de chaîne en texte brut.Si l’application de programmation décide de transmettre l’application 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 si vous le remplacez.
Le SDK AccessEnabler iOS/tvOS prend en charge en remplaçant l’ensemble de l’objet JSON d’informations client 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 si vous le remplacez.
Le SDK Android/FireOS AccessEnabler
prend en charge le remplacement de l’ensemble de l’objet JSON d’informations client par le paramètre device_info
de setOptions's/setOptions.
device_info
doit être une valeur de chaîne codée en Base64.device_info
, toutes les clés d’informations client calculées par le SDK Android/FireOS AccessEnabler
seront remplacées. Par conséquent, il est très important de calculer et de transmettre les valeurs pour autant de clés que possible. Pour plus d’informations sur la mise en œuvre, consultez le tableau Présentation et le guide pas à pas Android et FireOS.Livres de cuisine cookbooks
Cette section présente un guide pas à pas pour la création de l’objet JSON d’informations client dans le cas de différents types d’appareils.
Android android
Les informations sur le périphérique peuvent être structurées de la manière suivante :
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 d’application peuvent être structurées 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 le périphérique peuvent être structurées de la manière suivante :
Les informations de connexion peuvent être construites comme suit :
Les informations d’application peuvent être structurées comme suit :
- classe publique Build dans la documentation destinée aux développeurs Android.
- Identification des appareils FireTV
iOS/tvOS ios-tvos
Les informations sur le périphérique peuvent être structurées de la manière suivante :
Les informations de connexion peuvent être construites comme suit :
Les informations d’application peuvent être structurées 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 le périphérique peuvent être structurées de la manière suivante :
Les informations de connexion peuvent être construites comme suit :
Les informations d’application peuvent être structurées comme suit :
XBOX 1/360 xbox
Les informations sur le périphérique peuvent être structurées de la manière suivante :
Les informations de connexion peuvent être construites comme suit :
Les informations d’application peuvent être structurées comme suit :
Ressources