(Legacy) Übergeben von Client-Informationen (Gerät, Verbindung und Anwendung) pass-client-info
Umfang pass-client-info-scope
In diesem Dokument werden Details und Arbeitsmappen zum Übergeben von Client-Informationen (Gerät, Verbindung und Anwendung) von einer Programmieranwendung an REST-APIs oder SDKs für die Adobe Pass-Authentifizierung zusammengefasst.
Die Bereitstellung von Kundeninformationen bietet folgende Vorteile:
- Die Möglichkeit, die Home Base Authentication (HBA) im Falle einiger Gerätetypen und MVPDs, die HBA unterstützen können, ordnungsgemäß zu aktivieren.
- Die Möglichkeit, bei einigen Gerätetypen TTLs ordnungsgemäß anzuwenden (konfigurieren Sie beispielsweise längere TTLs für Authentifizierungssitzungen auf mit Fernsehgeräten verbundenen Geräten).
- Die Möglichkeit, Geschäftsmetriken mithilfe der Berechtigungs-Service-Überwachung (ESM) in aufgeschlüsselten Berichten über verschiedene Gerätetypen hinweg ordnungsgemäß zu aggregieren.
- Entsperrt die Möglichkeit, verschiedene Geschäftsregeln ordnungsgemäß anzuwenden (z. B. Beeinträchtigung) bei bestimmten Gerätetypen.
Übersicht pass-client-info-overview
Die Client-Informationen bestehen aus:
- Gerät Informationen über die Hardware- und Softwareattribute des Geräts, von dem aus der Benutzer versucht, den Programmiererinhalt zu nutzen.
- Verbindung Informationen zu den Verbindungsattributen des Geräts, von dem aus der Benutzer eine Verbindung zu Adobe Pass-Authentifizierungs- und/oder Programmierdiensten herstellt (z. B. Server-zu-Server-Implementierungen).
- Application Informationen über die registrierte Anwendung, von der aus der Benutzer versucht, den Programmiererinhalt zu nutzen.
Die Client-Informationen sind ein JSON-Objekt, das mit den in der folgenden Tabelle aufgeführten Schlüsseln erstellt wird.
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 verantwortlich ist.
REST-API rest-api
Adobe Pass-Authentifizierungs-Services unterstützen den Empfang der Client-Informationen wie folgt:
- as a header: „X-Device-Info“
- Als Abfrageparameter: „device_info“
- Als post-Parameter: „device_info“
SDK
JavaScript SDK js-sdk
AccessEnabler JavaScript SDK erstellt standardmäßig ein JSON-Objekt mit Client-Informationen, das an die Adobe Pass-Authentifizierungsdienste übergeben wird, sofern es nicht überschrieben wird.
AccessEnabler JavaScript SDK unterstützt nur Überschreiben des Schlüssels „applicationId“ aus dem JSON-Objekt für Client-Informationen über den setRequestor-Optionsparameter applicationId.
applicationId
Parameterwert muss ein Nur-Text-Zeichenfolgenwert sein.Falls sich die Programmieranwendung für die Übergabe der applicationId entscheidet, werden die übrigen Client-Informationsschlüssel weiterhin vom AccessEnabler JavaScript SDK berechnet.
iOS/tvOS SDK ios-tvos-sdk
Die AccessEnabler iOS/tvOS SDK erstellt standardmäßig ein Client-JSON-Objekt mit Informationen, das an die Adobe Pass-Authentifizierungsdienste übergeben wird, sofern es nicht überschrieben wird.
Die AccessEnabler iOS/tvOS SDK unterstützt Überschreiben des gesamten Client-JSON-Objekts über den Parameter setOptions „device_info“.
Android/FireOS SDK and-fire-os-sdk
Die AccessEnabler
Android/FireOS-SDK erstellt standardmäßig ein JSON-Objekt mit Client-Informationen, das an die Adobe Pass-Authentifizierungsdienste übergeben wird, sofern es nicht überschrieben wird.
Die AccessEnabler
Android/FireOS-SDK unterstützt Überschreiben des gesamten Client-Informations-JSON-Objekts durch den device_info
-Parameter setOptionss/setOptions.
device_info
Parameterwert muss ein Base64-kodierter) sein.device_info
zu übergeben, werden alle von der 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 zu übergeben. Weitere Informationen zur Implementierung finden Sie in der Tabelle Übersicht und im Cookbook Android und FireOS.Cookbooks cookbooks
In diesem Abschnitt wird ein Cookbook zum Erstellen des JSON-Objekts mit Client-Informationen für verschiedene Gerätetypen vorgestellt.
Android android
Die Geräteinformationen können wie folgt aufgebaut werden:
Die Verbindungsinformationen können wie folgt aufgebaut 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 aufgebaut 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 aufgebaut werden:
Die Verbindungsinformationen können wie folgt aufgebaut werden:
Die Anwendungsinformationen können wie folgt aufgebaut werden:
- public class Build in der Dokumentation von Android Developers.
- Identifizieren von FireTV-Geräten
iOS/tvOS ios-tvos
Die Geräteinformationen können wie folgt aufgebaut werden:
Die Verbindungsinformationen können wie folgt aufgebaut werden:
Die Anwendungsinformationen können wie folgt aufgebaut 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 aufgebaut werden:
Die Verbindungsinformationen können wie folgt aufgebaut werden:
Die Anwendungsinformationen können wie folgt aufgebaut werden:
XBOX 1/360 xbox
Die Geräteinformationen können wie folgt aufgebaut werden:
Die Verbindungsinformationen können wie folgt aufgebaut werden:
Die Anwendungsinformationen können wie folgt aufgebaut werden:
Ressourcen