Cette rubrique décrit la procédure d'intégration du SDK Device Risk (HarmonyOS).
Remarques d'utilisation
Le SDK Device Risk nécessite HarmonyOS NEXT 5.0 ou version ultérieure (API 12 ou version ultérieure).
Le SDK HarmonyOS présente les limites suivantes :
Compatible avec les appareils mobiles intelligents (téléphones ou tablettes) exécutant HarmonyOS NEXT 5.0 ou une version ultérieure.
Compatible avec l'architecture arm64-v8a.
Prérequis
Pour respecter les obligations de conformité en matière de confidentialité liées à l'intégration de SDK tiers, réduire les risques de violation de la vie privée et assurer un fonctionnement conforme, utilisez la dernière version publiée sur le centre de documentation Alibaba Cloud. Avant d'utiliser la détection des risques liés aux appareils, consultez les règles de traitement des informations personnelles ainsi que la Politique de confidentialité du SDK de détection de fraude, et intégrez le SDK en suivant les directives de conformité des SDK.
Autorisations
Pour améliorer la précision de la détection de fraude, le SDK requiert les autorisations suivantes :
|
Autorisation |
Requise |
Description |
|
|
Oui |
Accès à Internet. Le SDK nécessite une connexion réseau pour fonctionner. |
|
|
Oui |
Vérification de l'état du réseau. Le SDK utilise l'état du réseau pour fournir un service optimal. |
|
|
Non (recommandée) |
Autorise l'application à stocker des données persistantes. Le SDK utilise cette autorisation pour améliorer la stabilité de l'empreinte numérique de l'appareil. |
|
|
Non (recommandée) |
Collaboration multi-appareils. Le SDK détecte l'état de plusieurs appareils pour renforcer la sécurité. |
|
|
Non (recommandée) |
Obtention de l'identifiant publicitaire. Le SDK utilise les informations IDFA pour améliorer la stabilité de l'ID de l'appareil. |
Configuration des dépendances
Téléchargez le SDK HarmonyOS et extrayez l'archive. Le SDK est fourni sous la forme d'un package .har standard HarmonyOS.
Un fichier SO mono-architecture pèse environ 3,0 Mo.
Le SDK de détection des risques liés aux appareils intègre des mécanismes de protection du code et de chiffrement des données, ce qui explique la taille relativement importante du package.
Dans le fichier oh-package.json5 de votre projet, ajoutez la dépendance suivante à la section dependencies :
{
"dependencies": {
"aliyundevice": "file:../libs/HarmonyOS-AliyunDevice-xxx.har"
}
}
Configuration de l'obscurcissement des interfaces (important)
Pour éviter les erreurs fonctionnelles dues à l'obscurcissement des interfaces, vérifiez la configuration dans le fichier obfuscation.txt inclus dans le package .har et ne supprimez pas ce fichier. Si la configuration d'obscurcissement ne peut pas être fusionnée avec certaines versions du compilateur et que l'intégration échoue, ajoutez le fichier obfuscation-rules.txt issu du package .har au projet principal de votre application et incluez-y la configuration d'obscurcissement.
Appel du SDK
Une fois la configuration précédente effectuée, intégrez le client SDK en suivant ces trois étapes :
Initialisation (initWithOptions)
Obtention du jeton client (getDeviceToken)
Envoi du jeton à votre serveur métier
1. Initialisation (initWithOptions)
Cette fonction initialise le SDK et collecte les informations relatives à l'appareil. Appelez-la aussi tôt que possible lors du démarrage de l'application, tout en respectant les exigences de conformité. Effectuez cet appel une seule fois par lancement de l'application.
Prototype de la fonction
export class SecurityInitListener {
// code indicates the API call status code
onInitFinish(code: number): void {}
}
public initWithOptions(ctx: Context,
userAppKey: string,
options: Map<string, string>,
securityInitListener: SecurityInitListener): void;
-
Paramètres
ctx : le contexte (Context) de l'Ability actuelle.
userAppKey : identifie votre application. Vous pouvez en faire la demande via la section Gestion des applications d'appareil de la console Alibaba Cloud.
securityInitListener : le rappel d'initialisation. Utilisez ce rappel pour vérifier si l'initialisation a réussi. Valeur par défaut : null. Pour connaître les valeurs valides du champ code, reportez-vous aux valeurs de retour d'état.
-
options : paramètres optionnels de collecte d'informations. Valeur par défaut : null. Les options disponibles sont les suivantes.
Champ
Description
Exemple
IPv6Indique s'il faut utiliser un nom de domaine IPv6 pour signaler les informations de l'appareil. 0 (par défaut) : utiliser un nom de domaine IPv4. 1 : utiliser un nom de domaine IPv6.
"0"CustomUrlNom de domaine du serveur de rapport de données. Utilisé pour le rapport spécifique à un site. Aucune configuration n'est requise par défaut.
"https://cloudauth-device.aliyuncs.com"CustomHostHôte du serveur de rapport de données. Doit être utilisé conjointement avec CustomUrl. Aucun paramétrage n'est nécessaire par défaut.
"cloudauth-device.aliyuncs.com"Description des paramètres CustomUrl et CustomHost
Pour le rapport spécifique à un site, définissez CustomUrl et CustomHost sur le point de terminaison désigné pour votre région. Aucune configuration n'est requise par défaut.
Région
Adresse
Singapour (par défaut)
CustomUrl : https://cloudauth-device.ap-southeast-1.aliyuncs.com CustomHost : cloudauth-device.ap-southeast-1.aliyuncs.com
Chine (Hong Kong)
CustomUrl : https://cloudauth-device.cn-hongkong.aliyuncs.com CustomHost : cloudauth-device.cn-hongkong.aliyuncs.com
Allemagne
CustomUrl : https://cloudauth-device.eu-central-1.aliyuncs.com CustomHost : cloudauth-device.eu-central-1.aliyuncs.com
États-Unis
CustomUrl : https://cloudauth-device.us-west-1.aliyuncs.com CustomHost : cloudauth-device.us-west-1.aliyuncs.com
Exemple
@State USER_PRODUCT_KEY: string = "123e4567e89b12d3a45642661417****";
let options: Map<string, string> = new Map<string, string>();
options.set("IPv6", "0"); // Set to IPv4
// Set a custom data reporting endpoint
// options.set("CustomUrl", "xxx"); Set the reporting site URL
// options.set("CustomHost", "xxx"); Set the reporting site host
SecurityDevice.getInstance().initWithOptions(getContext(),
this.USER_PRODUCT_KEY, options, null);
2. Obtention du jeton client (getDeviceToken)
Obtenez le jeton client et signalez-le à votre serveur métier. Vous pouvez ensuite utiliser l'intégration Intégration de l'API côté serveur côté serveur pour récupérer les informations sur les risques liés à l'appareil.
Assurez-vous que l'intervalle entre l'appel à initWithOptions et getDeviceToken est d'au moins 3 secondes, ou appelez getDeviceToken dans le rappel de réussite de l'initialisation.
Lors de l'appel à getDeviceToken, nous vous recommandons de transmettre un bizId pour lier le jeton à un ID métier unique. Lors de la consultation des résultats côté serveur, transmettez le même ID pour vérifier le risque de falsification du jeton.
Prototype de la fonction
export class SecurityToken {
// Result code
public code:number = 0;
// deviceToken returned by the SDK
public token:string = "";
}
// Recommended: pass bizId
public getDeviceToken(bizId?: string): SecurityToken
Dans de bonnes conditions réseau, le jeton fait environ 600 octets. Dans de mauvaises conditions réseau, il atteint environ 2 Ko.
Si un grand nombre de jetons longs apparaissent dans votre activité métier :
Vérifiez d'abord que le réseau client est stable.
Ensuite, assurez-vous que l'intervalle entre les appels SDK initWithOptions et getDeviceToken est d'au moins 3 secondes, ou appelez getDeviceToken dans le rappel de réussite de l'initialisation.
Exemple
// Example with bizId. bizId is the client's business ID; passing it is optional.
let bizId = "1234567890abcdef1234567890ab****";
let tokenObj: SecurityToken = SecurityDevice.getInstance().getDeviceToken(bizId);
if (tokenObj.code == SecurityCode.SC_SUCCESS) {
console.log("Aliyun Token: " + tokenObj.token);
} else {
console.log("Aliyun Code: " + tokenObj.code);
}
3. Envoi du jeton à votre serveur métier
Après avoir obtenu le deviceToken, transmettez-le en tant que paramètre à votre serveur métier. Le serveur appelle ensuite l'API Alibaba Cloud de détection des risques liés aux appareils avec le deviceToken pour interroger et vérifier les informations sur les risques de l'appareil.
Valeurs de retour d'état
|
SecurityCode |
Code |
Description |
|
SC_SUCCESS |
10000 |
La collecte d'informations par le SDK a réussi. |
|
SC_NOT_INIT |
10001 |
Le SDK n'a pas terminé la collecte d'informations. |
|
SC_NOT_PERMISSION |
10002 |
Les autorisations de base HarmonyOS requises ne sont pas toutes accordées. |
|
SC_UNKNOWN_ERROR |
10003 |
Erreur système inconnue. |
|
SC_NETWORK_ERROR |
10004 |
Erreur réseau. |
|
SC_NETWORK_ERROR_EMPTY |
10005 |
Erreur réseau. La réponse est vide. |
|
SC_NETWORK_ERROR_INVALID |
10006 |
Le format de la réponse réseau n'est pas valide. |
|
SC_PARSE_SRV_CFG_ERROR |
10007 |
Échec de l'analyse de la configuration du serveur. |
|
SC_NETWORK_RET_CODE_ERROR |
10008 |
La passerelle a renvoyé un échec. |
|
SC_APPKEY_EMPTY |
10009 |
L'AppKey est vide. |
|
SC_PARAMS_ERROR |
10010 |
Autres erreurs de paramètre. |
|
SC_FGKEY_ERROR |
10011 |
Erreur de calcul de la clé. |
|
SC_APPKEY_ERROR |
10012 |
La version du SDK et la version de l'AppKey ne correspondent pas. |
Exemple de code complet
import { SecurityCode, SecurityToken, SecurityDevice } from 'aliyundevice';
@Entry
@Component
struct Index {
@State message: string = 'Aliyun Device';
@State ALIYUN_APPKEY: string = "XXX";
build() {
Row() {
Column() {
Button(this.message)
.fontSize(18)
.fontWeight(FontWeight.Bold)
.onClick((event: ClickEvent) => {
// Initialize the SDK. Call only once during the app lifecycle.
SecurityDevice.getInstance().initWithOptions(getContext(), this.ALIYUN_APPKEY, null, null);
// Do not call getDeviceToken synchronously right after initialization. If initialization has not finished, a degraded deviceToken is returned.
setTimeout(() => {
let tokenObj: SecurityToken = SecurityDevice.getInstance().getDeviceToken();
if (tokenObj.code == SecurityCode.SC_SUCCESS) {
console.log("Aliyun Token: " + tokenObj.token);
} else {
console.log("Aliyun Code: " + tokenObj.code);
}
}, 2000);
})
.margin({ top: 10 })
}
.width('100%')
}
.height('100%')
}
}
Appel de l'API de détection des risques liés aux appareils
Transmettez le deviceToken et les autres paramètres, puis reportez-vous à la section Intégration de l'API côté serveur pour appeler l'API de détection de fraude et effectuer la détection.
FAQ
Pour les questions fréquemment posées concernant l'intégration du SDK Device Risk, consultez la FAQ.