すべてのプロダクト
Search
ドキュメントセンター

Fraud Detection:Android 向けデバイス詐欺検出 SDK の統合

最終更新日:Mar 19, 2025

このトピックでは、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 のダウンロードと設定

  1. Android SDK パッケージをダウンロードして解凍します。 SDK パッケージは、Android 用の標準 .aar パッケージです。

  2. .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 を呼び出すことができます。

重要
  1. getDeviceToken 操作は比較的時間がかかります。 クライアントがメインスレッド以外を使用して操作を呼び出すようにしてください。 そうしないと、ANR (アプリケーション応答なし) エラーが発生し、アプリが応答しなくなる可能性があります。

  2. データ収集の呼び出しと getDevicetoken の呼び出しの間隔を 2 秒以上にしてください。

  3. ネットワーク品質が良好な場合、トークンの長さは約 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 を複数回呼び出すことができます。