Skicka klientinformation (enhet, anslutning och program) pass-client-info
Omfång pass-client-info-scope
Det här dokumentet samlar information och cookbooks för att skicka klientinformation (enhet, anslutning och program) från ett programmeringsprogram till Adobe Pass Authentication REST API:er eller SDK:er.
Fördelarna med att tillhandahålla kundinformation är:
- Möjligheten att korrekt aktivera HBA (Home Base Authentication) för vissa enhetstyper och MVPD-program som stöder HBA.
- Möjligheten att korrekt tillämpa TTL:er för vissa enhetstyper (till exempel konfigurera längre TTL:er för autentiseringssessioner på tv-anslutna enheter).
- Möjlighet att på rätt sätt sammanställa affärsdata i uppdelade rapporter över olika enhetstyper med hjälp av ESM (Entitlement Service Monitoring).
- Hindrar möjligheten att tillämpa olika affärsregler korrekt (t.ex. nedbrytning) på specifika enhetstyper.
Ökning pass-client-info-overview
Klientinformationen består av:
- Enhet information om maskinvaru- och programvaruattributen för enheten som användaren försöker använda programmerarinnehållet från.
- Anslutning information om anslutningsattributen för den enhet från vilken användaren ansluter till Adobe Pass autentiseringstjänster och/eller programmeringstjänster (t.ex. server-till-server-implementeringar).
- Program information om det registrerade programmet som användaren försöker använda programmerarinnehållet från.
Klientinformationen är ett JSON-objekt som skapats med nycklar som presenteras i följande tabell.
primaryHardwareType
, osName
, osFamily
, browserName
, browserVendor
, connectionSecure
.API-referenser api-ref
I det här avsnittet presenteras det API som hanterar klientinformation när du använder Adobe Pass Authentication REST API:er eller SDK:er.
REST API rest-api
Adobe Pass autentiseringstjänster har stöd för att ta emot klientinformationen på följande sätt:
- Som ett huvud: "X-Device-Info"
- Som en frågeparameter: "device_info"
- Som en post-parameter: "device_info"
SDK
JavaScript SDK js-sdk
AccessEnabler JavaScript SDK skapar som standard ett JSON-objekt för klientinformation, som skickas till Adobe Pass autentiseringstjänster, om det inte åsidosätts.
AccessEnabler JavaScript SDK har stöd för att endast åsidosätta nyckeln "applicationId" från JSON-objektet för klientinformation via alternativparametern setRequestor för applicationId.
applicationId
måste vara ett vanligt textsträngsvärde.Om programmerarprogrammet beslutar att godkänna applicationId, kommer resten av klientinformationsnycklarna fortfarande att beräknas av AccessEnabler JavaScript SDK.
iOS/tvOS SDK ios-tvos-sdk
AccessEnabler iOS/tvOS SDK skapar som standard ett JSON-objekt för klientinformation, som skickas till Adobe Pass autentiseringstjänster, om det inte åsidosätts.
AccessEnabler iOS/tvOS SDK har stöd för åsidosättning av JSON-objektet för hela-klientinformationen via parametern device_info i setOptions.
Android/FireOS SDK and-fire-os-sdk
Android/FireOS SDK (AccessEnabler
) skapar som standard ett JSON-objekt för klientinformation, som skickas till Adobe Pass autentiseringstjänster, om det inte åsidosätts.
Android/FireOS SDK AccessEnabler
har stöd för åsidosättning av JSON-objektet för hela-klientinformationen via setOptionss/setOptionss device_info
-parameter.
device_info
måste vara ett Base64-kodat-strängvärde.device_info
åsidosätts alla klientinformationsnycklar som beräknas av AccessEnabler
Android/FireOS SDK. Därför är det mycket viktigt att beräkna och skicka värdena för så många tangenter som möjligt. Mer information om implementeringen finns i tabellen Översikt och i cookbook-programmen Android och FireOS .Cookbooks cookbooks
I det här avsnittet presenteras en cookbook för att skapa JSON-objekt för klientinformation för olika enhetstyper.
Android android
Enhetsinformationen kan utformas på följande sätt:
Anslutningsinformationen kan utformas på följande sätt:
<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"
Programinformationen kan utformas på följande sätt:
Exempelkod
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
Enhetsinformationen kan utformas på följande sätt:
Anslutningsinformationen kan utformas på följande sätt:
Programinformationen kan utformas på följande sätt:
- den offentliga klassen Build i dokumentationen för Android-utvecklare.
- Identifiera FireTV-enheter
iOS/tvOS ios-tvos
Enhetsinformationen kan utformas på följande sätt:
Anslutningsinformationen kan utformas på följande sätt:
Programinformationen kan utformas på följande sätt:
Exempelkod
+ (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
Enhetsinformationen kan utformas på följande sätt:
Anslutningsinformationen kan utformas på följande sätt:
Programinformationen kan utformas på följande sätt:
XBOX 1/360 xbox
Enhetsinformationen kan utformas på följande sätt:
Anslutningsinformationen kan utformas på följande sätt:
Programinformationen kan utformas på följande sätt:
Resurser