Weitergeben von Client-Informationen (Gerät, Verbindung und Anwendung) pass-client-info
Anwendungsbereich pass-client-info-scope
In diesem Dokument werden Details und Cookies zur Weitergabe von Client-Informationen (Gerät, Verbindung und Anwendung) von einer Programmierungsanwendung an Adobe Pass Authentication REST APIs oder SDKs zusammengefasst.
Die Bereitstellung von Kundeninformationen bietet folgende Vorteile:
- Die Fähigkeit, die Home Base Authentication (HBA) ordnungsgemäß zu aktivieren, wenn es sich um einige Gerätetypen und MVPDs handelt, die HBA unterstützen können.
- Die Möglichkeit, TTLs bei bestimmten Gerätetypen ordnungsgemäß anzuwenden (z. B. längere TTLs für Authentifizierungssitzungen auf TV-verbundenen Geräten konfigurieren).
- Die Fähigkeit, Geschäftsmetriken mithilfe der Entitlement Service Monitoring (ESM) ordnungsgemäß in aufgeschlüsselten Berichten über Gerätetypen zu aggregieren.
- Hebt die Fähigkeit auf, verschiedene Geschäftsregeln (z. B. Abbau) bei bestimmten Gerätetypen.
Übersicht pass-client-info-overview
Die Client-Informationen bestehen aus:
- Gerät Informationen zu den Hardware- und Softwareattributen des Geräts, von dem aus der Benutzer versucht, den Programminhalt zu verwenden.
- Verbindung Informationen über die Verbindungsattribute des Geräts, von dem aus der Benutzer eine Verbindung zu Adobe Pass-Authentifizierungsdiensten und/oder Programmiererdiensten herstellt (z. B. Server-zu-Server-Implementierungen).
- Anwendung Informationen zur registrierten Anwendung, von der aus der Benutzer versucht, den Programminhalt zu verwenden.
Die Client-Informationen sind ein JSON-Objekt, das mit Schlüsseln erstellt wurde, die in der folgenden Tabelle dargestellt sind.
primaryHardwareType
, osName
, osFamily
, browserName
, browserVendor
, connectionSecure
.API-Referenzen api-ref
In diesem Abschnitt wird die API vorgestellt, die für die Verarbeitung von Client-Informationen bei der Verwendung von Adobe Pass Authentication REST APIs oder SDKs zuständig ist.
REST-API rest-api
Adobe Pass-Authentifizierungsdienste unterstützen den Empfang von Client-Informationen wie folgt:
- Als Header: "X-Device-Info"
- Als Abfrageparameter: "device_info"
- Als Post-Parameter: "device_info"
SDK
JAVASCRIPT SDK js-sdk
Das AccessEnabler JavaScript SDK erstellt standardmäßig ein JSON-Objekt mit Client-Informationen, das an Adobe Pass-Authentifizierungsdienste übergeben wird, sofern es nicht überschrieben wird.
Das AccessEnabler JavaScript SDK unterstützt nur das Überschreiben des Schlüssels "applicationId"aus dem JSON-Objekt für Client-Informationen über den Optionsparameter setRequestor' applicationId .
applicationId
muss ein Nur-Text-String-Wert sein.Falls die Programmeranwendung beschließt, die applicationId zu übergeben, werden die restlichen Client-Informationsschlüssel weiterhin vom AccessEnabler JavaScript SDK berechnet.
iOS/tvOS-SDK ios-tvos-sdk
Das AccessEnabler iOS/tvOS SDK erstellt standardmäßig ein JSON-Objekt mit Client-Informationen, das an Adobe Pass-Authentifizierungsdienste übergeben wird, sofern es nicht überschrieben wird.
Das AccessEnabler iOS/tvOS-SDK unterstützt beim Überschreiben des gesamten JSON-Objekts für Client-Informationen über den Parameter device_info des setOptions.
Android/FireOS-SDK and-fire-os-sdk
Das SDK AccessEnabler
Android/FireOS erstellt standardmäßig ein JSON-Objekt mit Client-Informationen, das an Adobe Pass-Authentifizierungsdienste übergeben wird, sofern es nicht überschrieben wird.
Das SDK AccessEnabler
Android/FireOS unterstützt das Überschreiben des gesamten JSON-Objekts für Client-Informationen über den Parameter setOptions/setOptions' device_info
.
device_info
muss ein Base64-kodierter String -Wert sein.device_info
zu übergeben, werden alle vom AccessEnabler
Android/FireOS SDK berechneten Client-Informationsschlüssel überschrieben. Daher ist es sehr wichtig, die Werte für so viele Schlüssel wie möglich zu berechnen und weiterzugeben. Weitere Informationen zur Implementierung finden Sie in der Tabelle Überblick und im Cookbook Android und FireOS .Cookbooks cookbooks
In diesem Abschnitt wird ein Cookbook zum Erstellen des JSON-Objekts für Client-Informationen bei verschiedenen Gerätetypen vorgestellt.
Android android
Die Geräteinformationen können wie folgt konstruiert werden:
Die Verbindungsinformationen können wie folgt erstellt werden:
<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"
Die Anwendungsinformationen können wie folgt erstellt werden:
Beispielcode
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
Die Geräteinformationen können wie folgt konstruiert werden:
Die Verbindungsinformationen können wie folgt erstellt werden:
Die Anwendungsinformationen können wie folgt erstellt werden:
- öffentliche Klasse Build in der Dokumentation der Android-Entwickler.
- Identifizieren von FireTV-Geräten
iOS/tvOS ios-tvos
Die Geräteinformationen können wie folgt konstruiert werden:
Die Verbindungsinformationen können wie folgt erstellt werden:
Die Anwendungsinformationen können wie folgt erstellt werden:
Beispielcode
+ (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
Die Geräteinformationen können wie folgt konstruiert werden:
Die Verbindungsinformationen können wie folgt erstellt werden:
Die Anwendungsinformationen können wie folgt erstellt werden:
XBOX 1/360 xbox
Die Geräteinformationen können wie folgt konstruiert werden:
Die Verbindungsinformationen können wie folgt erstellt werden:
Die Anwendungsinformationen können wie folgt erstellt werden:
Ressourcen