Integrasi dengan Google Cloud Armor untuk aplikasi seluler

Dokumen ini menunjukkan cara mengintegrasikan fitur WAF reCAPTCHA dengan Google Cloud Armor di aplikasi seluler.

Untuk menyelesaikan integrasi, Anda harus menerapkan satu atau beberapa fitur reCAPTCHA untuk WAF dan mengonfigurasi kebijakan keamanan Google Cloud Armor. Namun, Anda hanya dapat menerapkan token tindakan reCAPTCHA untuk integrasi dengan Google Cloud Armor di aplikasi seluler.

Sebelum memulai

  1. Aktifkan reCAPTCHA Enterprise API.

    Enable the API

  2. Identifikasi tindakan yang ingin Anda lindungi.

Mengimplementasikan token tindakan reCAPTCHA

Anda harus menjalankan reCAPTCHA di aplikasi seluler untuk membuat token tindakan. Setelah reCAPTCHA membuat token tindakan, Anda akan melampirkan token tindakan ke header permintaan yang telah ditentukan di mana pun Anda perlu melindungi tindakan pengguna, seperti checkout. Secara default, token tindakan valid selama 30 menit, tetapi dapat bervariasi bergantung pada traffic. Anda harus melampirkan token tindakan ke header permintaan yang telah ditentukan sebelum token berakhir masa berlakunya, sehingga Google Cloud Armor dapat mengevaluasi atribut token.

Untuk menerapkan token tindakan reCAPTCHA, lakukan hal berikut:

  1. Buat kunci token tindakan untuk aplikasi seluler Anda.

    Konsol

    1. Di konsol Google Cloud, buka halaman reCAPTCHA.

      Buka reCAPTCHA

    2. Pastikan nama project Anda muncul di pemilih resource di bagian atas halaman.

      Jika tidak melihat nama project, klik pemilih resource, lalu pilih project Anda.

    3. Klik Create key.
    4. Di kolom Nama tampilan, masukkan nama tampilan untuk kunci.
    5. Bergantung pada jenis aplikasi yang kunci reCAPTCHA-nya ingin Anda buat untuk WAF, lakukan tindakan yang sesuai:
    6. Membuat kunci reCAPTCHA untuk WAF untuk aplikasi iOS

      Sebaiknya buat satu kunci reCAPTCHA per aplikasi iOS.

      1. Dari menu Pilih jenis platform, pilih Aplikasi iOS.
        1. Di bagian Daftar ID paket iOS, klik Tambahkan ID paket iOS.
        2. Di kolom Bundle ID, masukkan nama ID paket iOS Anda.

        3. Opsional: Untuk menambahkan ID paket tambahan, klik Tambahkan ID paket iOS dan masukkan nama ID paket iOS Anda di kolom ID Paket.
        4. Opsional: Berikan Setelan Apple Developer.

          Sebaiknya berikan data ini karena reCAPTCHA dapat memberikan skor risiko yang lebih akurat untuk traffic Anda.

          Masukkan informasi berikut:

          • Kunci pribadi (.p8): Kunci ini dibuat di Apple Developer Center di bagian Certificates, Identifiers & Profiles.
          • ID kunci: ID kunci developer Apple (string 10 karakter).
          • ID Tim: ID tim Apple (string 10 karakter) yang memiliki profil penyediaan yang digunakan untuk mem-build aplikasi Anda.
        5. Luaskan Verifikasi ID paket dan jenis kunci.
          1. Untuk membuat kunci reCAPTCHA bagi WAF, lakukan hal berikut:
            1. Aktifkan tombol Firewall aplikasi web (WAF).
            2. Dari menu Service, pilih Cloud Armor.
            3. Dari menu Fitur, pilih Token tindakan.
          2. Untuk melindungi kunci reCAPTCHA untuk ID paket Anda, pastikan tombol Nonaktifkan verifikasi ID paket dinonaktifkan.
          3. Untuk lingkungan non-produksi, jika Anda ingin menentukan skor yang ingin ditampilkan kunci saat penilaian dibuat untuknya, lakukan hal berikut:

            1. Klik tombol Ini adalah kunci pengujian.
            2. Di kotak Score, tentukan skor antara 0 hingga 1,0.
        6. Klik Create key.
        7. Kunci yang baru dibuat akan tercantum di halaman kunci reCAPTCHA.

      Membuat kunci reCAPTCHA untuk WAF untuk aplikasi Android

      1. Dari menu Pilih jenis platform, pilih Aplikasi Android.
      2. Di bagian Daftar paket Android, klik Tambahkan paket Android.
      3. Di kolom Android package, masukkan nama paket Android Anda.
      4. Opsional: Untuk menambahkan paket tambahan, klik Tambahkan paket Android dan masukkan nama paket Android lain di kolom Android package.
      5. Luaskan Verifikasi nama paket, distribusi aplikasi, dan kunci pengujian.
        1. Untuk membuat kunci reCAPTCHA bagi WAF, lakukan hal berikut:
          1. Aktifkan tombol Firewall aplikasi web (WAF).
          2. Dari menu Service, pilih Cloud Armor.
          3. Dari menu Fitur, pilih Token tindakan.
        2. Untuk menerapkan bahwa kunci reCAPTCHA hanya digunakan dalam aplikasi Anda, nonaktifkan tombol Nonaktifkan verifikasi nama paket.
        3. Jika Anda ingin membuat kunci untuk aplikasi yang tersedia di app store lain selain Google Play Store, aktifkan Dukung aplikasi yang didistribusikan di luar Google Play Store.
        4. Untuk lingkungan non-produksi, jika Anda ingin menentukan skor yang ingin ditampilkan kunci saat penilaian dibuat untuknya, lakukan hal berikut:

          1. Klik tombol Ini adalah kunci pengujian.
          2. Di kotak Score, tentukan skor antara 0 hingga 1,0.
      6. Klik Create key.
      7. Kunci yang baru dibuat akan tercantum di halaman kunci reCAPTCHA.

    gcloud (iOS)

    Untuk membuat kunci reCAPTCHA, gunakan perintah gcloud recaptcha keys create.

    Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

    • DISPLAY_NAME: Nama untuk kunci. Biasanya nama situs.
    • BUNDLE_IDs: ID paket iOS aplikasi yang diizinkan untuk menggunakan kunci. Tentukan beberapa ID paket sebagai daftar yang dipisahkan koma.
    • WAF_FEATURE: Nama fitur WAF. Tentukan action-token.
    • WAF_SERVICE: Nama penyedia layanan WAF. Tentukan CA untuk Google Cloud Armor.

    Jalankan perintah gcloud recaptcha keys create:

    Linux, macOS, atau Cloud Shell

    gcloud recaptcha keys create \
    --display-name=DISPLAY_NAME  \
    --ios --bundle-ids=BUNDLE_IDs \
    --waf-feature=WAF_FEATURE \
    --waf-service=WAF_SERVICE 

    Windows (PowerShell)

    gcloud recaptcha keys create `
    --display-name=DISPLAY_NAME  `
    --ios --bundle-ids=BUNDLE_IDs `
    --waf-feature=WAF_FEATURE `
    --waf-service=WAF_SERVICE 

    Windows (cmd.exe)

    gcloud recaptcha keys create ^
    --display-name=DISPLAY_NAME  ^
    --ios --bundle-ids=BUNDLE_IDs ^
    --waf-feature=WAF_FEATURE ^
    --waf-service=WAF_SERVICE 

    Respons berisi kunci reCAPTCHA yang baru dibuat.

    gcloud (Android)

    Untuk membuat kunci reCAPTCHA, gunakan perintah gcloud recaptcha keys create.

    Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

    • DISPLAY_NAME: Nama untuk kunci. Biasanya nama situs.
    • PACKAGE_NAMES: Nama paket Android aplikasi yang diizinkan untuk menggunakan kunci. Tentukan beberapa nama paket sebagai daftar yang dipisahkan koma.
    • WAF_FEATURE: Nama fitur WAF. Tentukan action-token.
    • WAF_SERVICE: Nama penyedia layanan WAF. Tentukan CA untuk Google Cloud Armor.

    Jalankan perintah gcloud recaptcha keys create:

    Linux, macOS, atau Cloud Shell

    gcloud recaptcha keys create \
    --display-name=DISPLAY_NAME  \
    --android --package-names=PACKAGE_NAMES \
    --waf-feature=WAF_FEATURE \
    --waf-service=WAF_SERVICE 

    Windows (PowerShell)

    gcloud recaptcha keys create `
    --display-name=DISPLAY_NAME  `
    --android --package-names=PACKAGE_NAMES `
    --waf-feature=WAF_FEATURE `
    --waf-service=WAF_SERVICE 

    Windows (cmd.exe)

    gcloud recaptcha keys create ^
    --display-name=DISPLAY_NAME  ^
    --android --package-names=PACKAGE_NAMES ^
    --waf-feature=WAF_FEATURE ^
    --waf-service=WAF_SERVICE 

    Respons berisi kunci reCAPTCHA yang baru dibuat.

    REST (iOS)

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • DISPLAY_NAME: Nama untuk kunci. Biasanya nama aplikasi.
    • BUNDLE_IDs: ID paket iOS aplikasi yang diizinkan untuk menggunakan kunci. Tentukan beberapa ID paket sebagai daftar yang dipisahkan koma.
    • WAF_FEATURE: Nama fitur WAF. Tentukan action-token.
    • WAF_SERVICE: Nama penyedia layanan WAF. Tentukan CA untuk Google Cloud Armor.

    Metode HTTP dan URL:

    POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys

    Isi JSON permintaan:

    {
      "displayName": "DISPLAY_NAME",
      "iosSettings": {
     "allowedBundleIds": "BUNDLE_IDS"
     },
       'wafSettings': "  {
           "wafService": "CA",
     "wafFeature": "ACTION_TOKEN"
      }
     }
    
    

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys"

    PowerShell

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys" | Select-Object -Expand Content

    Anda akan melihat respons JSON seperti berikut:

    
    {
      "name": "projects/project-id/keys/6LfhtywnAAAAABY3sCS2duZ6A55kmDXz-PNEgKgT",
      "displayName": "DISPLAY_NAME",
      "iosSettings": {
        "allowAllBundleIds": false,
        "allowedBundleIds": [
            BUNDLE_IDS
        ]
      },
      "labels": {},
      "wafSettings": {
          "wafService": "CA",
          "wafFeature": "ACTION_TOKEN"
      }
    }
    
    

    REST (Android)

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • DISPLAY_NAME: Nama untuk kunci. Biasanya nama aplikasi.
    • PACKAGE_NAMES: Nama paket Android aplikasi yang diizinkan untuk menggunakan kunci. Tentukan beberapa nama paket sebagai daftar yang dipisahkan koma.
    • WAF_FEATURE: Nama fitur WAF. Tentukan action-token.
    • WAF_SERVICE: Nama penyedia layanan WAF. Tentukan CA untuk Google Cloud Armor.

    Metode HTTP dan URL:

    POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys

    Isi JSON permintaan:

    {
      "displayName": "DISPLAY_NAME",
      "androidSettings": {
      "allowedPackageNames":"PACKAGE_NAMES"
     },
       'wafSettings': "  {
           "wafService": "CA",
     "wafFeature": "ACTION_TOKEN"
      }
     }
    
    

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys"

    PowerShell

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys" | Select-Object -Expand Content

    Anda akan melihat respons JSON seperti berikut:

    
    {
      "name": "projects/project-id/keys/6LcioSknAAAAABrjlMuZv2fjIGYMqwaAFC9izhoy",
      "displayName": "DISPLAY_NAME",
      "androidSettings": {
          "allowAllPackageNames": false,
          "allowedPackageNames": [
              PACKAGE_NAMES
          ],
          "supportNonGoogleAppStoreDistribution": false
      },
      "labels": {},
      "wafSettings": {
          "wafService": "CA",
          "wafFeature": "ACTION_TOKEN"
      }
    }
    
    

  2. Integrasikan SDK seluler reCAPTCHA di aplikasi seluler Anda dengan kunci token tindakan yang Anda buat. Untuk petunjuknya, lihat dokumen yang sesuai dengan jenis aplikasi seluler Anda.

  3. Setelah Anda menerima token dari reCAPTCHA, lampirkan token tersebut ke header permintaan yang telah ditentukan dalam format berikut:

    X-Recaptcha-Token: value-of-your-action-token
    

    Contoh kode berikut menunjukkan cara melampirkan token:

    Android

    Contoh kode di Java

    // This example shows how to send an HTTP request to the backend server
    // attached with the reCAPTCHA token in the header.
    //
    // @param serverUrl: the URL of the backend server.
    // @param rceToken: reCAPTCHA token that is attached to the header of the
    // HTTP request.
    
    public static void sendRequestToServerWithRceToken(
        String serverUrl, String rceToken) throws JSONException, IOException {
     URL url = new URL(String.format("http://%s/decryptcaptchacookie/accesswafserver", serverUrl));
     HttpURLConnection connection = (HttpURLConnection) url.openConnection();
     connection.setRequestProperty("X-Recaptcha-Token", rceToken);
    
     try {
        String requestBody = "['']";
        sendRequest(connection, requestBody, "AccessWithRceToken", "GET");
     } finally {
        connection.disconnect();
     }
    }
    
    private static void sendRequest(
        HttpURLConnection connection, String requestString, String requestName, String action)
        throws IOException {
     connection.setConnectTimeout(HTTP_CONNECT_TIMEOUT_MS);
     connection.setReadTimeout(HTTP_READ_TIMEOUT_MS);
     connection.setRequestProperty("Content-type", CONTENT_TYPE);
     connection.setRequestProperty(
        "Content-Length", Integer.toString(Utf8.encodedLength(requestString)));
     connection.setRequestMethod(action);
     connection.setDoOutput(true);
     connection.connect();
     try (OutputStream postStream = connection.getOutputStream()) {
        postStream.write(requestString.getBytes(UTF_8));
     }
    
     int responseCode = connection.getResponseCode();
     String response = connection.getResponseMessage();
     if (responseCode != HttpURLConnection.HTTP_OK) {
        throw new IOException(
           String.format(
              "Failed to complete request.\nResponse code:%s\nError Detail:\n%s",
              responseCode, response));
     }
    }

    iOS

    Contoh kode di Swift

    // This example shows how to send an HTTP request to the backend server
    // attached with the reCAPTCHA token in the header.
    // @param serverUrl: the URL of the backend server.
    // @param rceToken: reCAPTCHA token that is attached to the header of
    // the HTTP request.
    
     public static func accessWafServer(rceToken: String, serverUrl: String)
        async throws -> String
     {
        let requestURL = try HttpHelper.createRequestURL(endpoint: serverUrl)
        var request = try HttpHelper.createRequest(requestURL: requestURL, action: "GET")
        request.setValue(rceToken, forHTTPHeaderField: "X-Recaptcha-Token")
    
        let data = try await HttpHelper.getDataFromServer(request)
    
        return String(decoding: data, as: UTF8.self)
     }

Mengonfigurasi kebijakan keamanan Google Cloud Armor

Setelah menerapkan fitur reCAPTCHA untuk WAF, Anda harus mengonfigurasi kebijakan keamanan Google Cloud Armor yang mengevaluasi token reCAPTCHA untuk pengelolaan bot.

Untuk mempelajari cara mengonfigurasi kebijakan keamanan Google Cloud Armor dan menggunakan kunci token tindakan dengan kebijakan keamanan Anda, lihat Mengonfigurasi aturan untuk pengelolaan bot.

Langkah selanjutnya