このトピックでは、Android 向けデバイス詐欺検出 SDK を統合する方法について説明します。
前提条件
Android 4.0.3 以降および minSdkVersion 15 以降を使用しています。
SDK の統合がプライバシールールに準拠していることを確認するには、Alibaba Cloud の公式 Web サイトでリリースされている SDK の最新バージョンを使用する必要があります。 これにより、プライバシーの漏洩を防ぎ、ビジネスがコンプライアンス規制に準拠していることを確認できます。 デバイス詐欺検出を使用する前に、個人情報処理の関連ルールと詐欺検出 SDK プライバシーポリシーを理解していることを確認してください。 デバイス詐欺検出 SDK の準拠使用で提供されている説明に基づいて SDK を統合してください。
権限の説明
デバイス詐欺検出の効率を向上させるために、特定の権限を付与することをお勧めします。 次の表に、権限を示します。
権限 | 必須 | 説明 |
android.permission.INTERNET | はい | ネットワークにアクセスするための権限。 SDK に権限がない場合、特定の機能は使用できません。 |
android.permission.ACCESS_NETWORK_STATE | いいえ (推奨) | デバイスのネットワーク状態を取得するための権限。 |
android.permission.READ_PHONE_STATE | いいえ (推奨) | 権限は、Android 6.0 以降で動的に付与されます。 SDK が関連する権限を必要とする場合は、SDK を統合してデータ収集操作を呼び出す前に、アプリに権限が付与されていることを確認してください。 |
android.permission.WRITE_EXTERNAL_STORAGE | いいえ (推奨) | |
android.permission.READ_EXTERNAL_STORAGE | いいえ (推奨) |
SDK のダウンロードと設定
Android SDK パッケージをダウンロードして解凍します。 SDK パッケージは、Android 用の標準 .aar パッケージです。
.aar SDK パッケージをプロジェクトの libs ディレクトリにコピーして貼り付けます。 アプリの build.gradle ファイルに次の依存関係を追加します。
// SDK パッケージ implementation files('libs/Android-AliyunDevice-Version number.aar') // サードパーティ製ネットワークライブラリの依存関係 implementation 'com.squareup.okhttp3:okhttp:3.11.0' implementation 'com.squareup.okio:okio:1.14.0'重要サードパーティ製ネットワークライブラリの依存関係を追加する必要があります。 そうしないと、SDK はインターネットに接続できません。
情報の収集
デバイス詐欺検出を使用する場合は、次の関数を呼び出して必要なデータを収集する必要があります。 コンプライアンス要件が満たされたら、できるだけ早く関数を呼び出すことをお勧めします。
関数の構文
public interface SecurityInitListener {
// code パラメーターは、操作の状態コードを指定します。
void onInitFinish(int code);
}
public void initWithOptions(Context ctx,
String appKey,
Map<String, String> options,
SecurityInitListener securityInitListener);パラメーター
ctx: 有効な値は、アプリケーションコンテキストとアクティビティコンテキストです。
appKey: ユーザーの ID。 デバイス APP 管理 タブの詐欺検出コンソールで ID を取得できます。
options: データ収集のオプションパラメーター。 値は null にすることができます。 次の表に、オプションパラメーターを示します。
パラメーター | 説明 | 例 |
IPv6 | デバイス情報の報告に IPv6 ドメイン名を使用するかどうかを指定します。 有効な値: 0 (デフォルト): IPv4 ドメイン名が使用されます。 1: IPv6 ドメイン名が使用されます。 | "1" |
CustomUrl | データを送信するセルフマネージドサーバーのドメイン名。 | "https://cloudauth-device.aliyuncs.com" |
CustomHost | データを送信するセルフマネージドサーバーのホスト。 | "cloudauth-device.aliyuncs.com" |
DataType | 除外される機密データのタイプ。 このパラメーターはデフォルトで空であり、すべてのデータが収集されることを指定します。 次の表に、除外できるデータのタイプを示します。 | 1 つのデータタイプ: ''NO_UNIQUE_DEVICE_DATA'' 複数のデータタイプ: ''NO_UNIQUE_DEVICE_DATA| NO_IDENTIFY_DEVICE_DATA'' |
機密データのタイプ | 説明 | デバイス情報フィールド |
NO_UNIQUE_DEVICE_DATA | リセット可能なデバイス識別子。 | 次のフィールドを除外できます: Open Anonymous Device Identifier (OAID)、Google advertising ID、Android ID。 |
NO_IDENTIFY_DEVICE_DATA | リセット不可なデバイス識別子。 | 次のフィールドを除外できます: International Mobile Equipment Identity (IMEI)、International Mobile Equipment Identity (IMSI)、SimSerial、BuildSerial (SN)、Media Access Control (MAC) アドレス。 |
NO_BASIC_DEVICE_ DATA | 基本的なデバイス情報。 | 次のフィールドを除外できます: デバイス名 (Build.DEVICE)、Android バージョン (Build.VERSION#RELEASE)、画面の解像度。 |
NO_EXTRA_DEVICE_ DATA | 拡張機密情報。 | 次の情報を除外できます: 不正取引に使用されるアプリのリスト、LAN (ローカルエリアネットワーク) の IP アドレス、DNS (ドメインネームシステム) の IP アドレス、接続されている Wi-Fi ネットワークに関する情報 (対応する SSID (Service Set Identifier)、BSSID (Basic Service Set Identifier) を含む)、近くの Wi-Fi ネットワークのリスト、位置情報。 |
securityInitListener: デバイス詐欺検出 SDK を使用したデータ収集のコールバック操作。データが収集されたかどうかを判断するために使用できます。 code パラメーターの値の範囲の詳細については、このトピックの「状態コード」セクションを参照してください。
戻り値
なし。
クライアントトークンの取得
クライアントトークンを取得し、トークンをサーバーに送信してから、イベントパラメーターとレスポンスパラメーターに基づいてデバイスリスク情報を取得します。 詳細については、「デバイス詐欺検出のサービスイベントパラメーターとレスポンスパラメーター」をご参照ください。
関数の構文
public class Securitytoken {
// 操作の状態コード。
public int code;
// サーバー側で結果をクエリするために使用されるトークン。
public String token;
}
public Securitytoken getDevicetoken();戻り値
値は Securitytoken クラスです。
code: 操作の状態コード。 このパラメーターは、操作が成功したかどうかを示します。 code パラメーターの値の範囲の詳細については、このトピックの「状態コード」セクションを参照してください。
token: クライアントに返されるトークン。 トークンのデータ型は文字列です。 トークンを使用して、デバイス詐欺検出 API を呼び出すことができます。
getDeviceToken 操作は比較的時間がかかります。 クライアントがメインスレッド以外を使用して操作を呼び出すようにしてください。 そうしないと、ANR (アプリケーション応答なし) エラーが発生し、アプリが応答しなくなる可能性があります。
データ収集の呼び出しと getDevicetoken の呼び出しの間隔を 2 秒以上にしてください。
ネットワーク品質が良好な場合、トークンの長さは約 600 バイトです。 ネットワーク品質が悪い場合、トークンの長さは約 2.5 KB です。
状態コード
SecurityCode | コード | 説明 |
SC_SUCCESS | 10000 | データ収集は成功しました。 |
SC_NOT_INIT | 10001 | データ収集に失敗しました。 |
SC_NOT_PERMISSION | 10002 | 1 つ以上の基本的な Android 権限が SDK に付与されていません。 |
SC_UNKNOWN_ERROR | 10003 | 不明なシステムエラーが発生しました。 |
SC_NETWORK_ERROR | 10004 | ネットワークエラーが発生しました。 |
SC_NETWORK_ERROR_EMPTY | 10005 | ネットワークエラーが発生し、戻り値は空の文字列です。 |
SC_NETWORK_ERROR_INVALID | 10006 | レスポンスの形式が無効です。 |
SC_PARSE_SRV_CFG_ERROR | 10007 | システムはサーバー側の設定を解析できませんでした。 |
SC_NETWORK_RET_CODE_ERROR | 10008 | ゲートウェイがエラーを返しました。 |
SC_APPKEY_EMPTY | 10009 | appKey パラメーターが空のままです。 |
SC_PARAMS_ERROR | 10010 | その他のパラメーターエラーが発生しました。 |
SC_FGKEY_ERROR | 10011 | システムはキーを計算できませんでした。 |
SC_APPKEY_ERROR | 10012 | SDK のバージョンが appkey のバージョンと一致しません。 |
サンプルコード
デバイス詐欺検出を使用する場合は、データ収集操作を呼び出す必要があります。 コンプライアンス要件が満たされたら、できるだけ早く操作を呼び出すことをお勧めします。
ALIYUN_APPKEY パラメーターの値は、ユーザーを識別するために使用されます。 デバイス APP 管理 タブの詐欺検出コンソールで ID を取得できます。
options パラメーターの DataType フィールドを使用して、データ収集の特定のタイプを設定できます。 これは、特定のビジネスシナリオにおけるプライバシー保護要件を満たすのに役立ちます。
public class CustomApplication extends Application {
private static String ALIYUN_APPKEY = "xxxx";
@Override
public void onCreate() {
super.onCreate();
// 特定のタイプのデータを除外することにより、プライバシーデータ収集を管理します。 値を NO_IDENTIFY_DEVICE_DATA に設定すると、リセット不可なデバイス識別子が除外されます。 複数のデータタイプを指定できます。 データタイプは縦棒 (|) で区切ります。 "(NO_IDENTIFY_DEVICE_DATA))" の入力は空にできません。
Map<String, String> options = new HashMap<>();
options.put("DataType", String.valueOf(NO_IDENTIFY_DEVICE_DATA));
// デバイス詐欺検出 SDK を使用してデータを収集する場合は、リスクシナリオでできるだけ早くデータ収集操作が呼び出されるようにしてください。
SecurityDevice.getInstance().initWithOptions(this, ALIYUN_APPKEY, options, null);
}
}アカウント登録やプロモーションイベントなど、詐欺検出が必要なシナリオでは、クライアントトークンを取得してアプリケーションサーバーに送信する必要があります。 データ収集の呼び出しと getDevicetoken の呼び出しの間隔を 2 秒以上にしてください。
getDeviceToken 操作は比較的時間がかかります。 クライアントがメインスレッド以外を使用して操作を呼び出すようにしてください。
new Thread() {
@Override
public void run() {
Securitytoken st = SecurityDevice.getInstance().getDevicetoken();
if(null != st){
if(SecurityCode.SC_SUCCESS == st.code){
Log.d("AliyunDevice", "token: " + st.token);
// トークンをセルフマネージドアプリケーションサーバーに送信し、デバイス詐欺検出 API を呼び出します。
// sendToAPPServer(st.token);
} else {
Log.e("AliyunDevice", "getDevicetoken error, code: " + st.code);
}
} else {
Log.e("AliyunDevice", "getDevicetoken is null.");
}
}
}.start();操作の難読化
-keep class net.security.device.api.** {*;}
-dontwarn net.security.device.api.**デバイス詐欺検出 API の呼び出し
deviceToken パラメーターとその他の関連パラメーターを使用して、デバイス詐欺検出 API を呼び出します。 詳細については、次のトピックを参照してください。
詳細については、「デバイス詐欺検出のサービスイベントパラメーターとレスポンスパラメーター」をご参照ください。
FAQ
1. デバイス詐欺検出 SDK でサポートされているアーキテクチャはどれですか?
デバイス詐欺検出 SDK は、ARM、ARMv7、および ARM64 アーキテクチャをサポートしています。
2. SDK パッケージのサイズはどれくらいですか?
単一アーキテクチャの SO (Shared Object) ファイルのサイズは約 1.8 MB です。
リバースエンジニアリングを防ぎ、転送中のデータのセキュリティを確保するために、SDK には多数の難読化、拡張、および暗号化操作が含まれています。 そのため、SDK パッケージのサイズも大きくなります。
3. デバイストークンの有効期間はどれくらいですか? デバイストークンを使用してサーバー側の API を複数回呼び出すことはできますか?
デバイストークンは 7 日間有効です。 同じデバイストークンを使用して、サーバー側の API を複数回呼び出すことができます。