> ## Documentation Index
> Fetch the complete documentation index at: https://auth0.generaltranslation.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Akamai を構成して補足シグナルを送信する

<Warning>
  **Auth0 Supplemental Signals は現在 Early Access 段階にあります。**

  この機能を使用することにより、Okta の [Master Subscription Agreement](https://www.okta.com/legal) に定める該当の Free Trial 条項に同意したものとみなされます。Auth0 製品のリリース段階の詳細については、[Product Release Stages](/docs/ja-JP/troubleshoot/product-lifecycle/product-release-stages) を参照してください。
</Warning>

<Info>
  **開始する前に**

  Akamai を構成して補足シグナルをお使いの Auth0 テナントに送信するには、[Akamai をリバース プロキシとして構成](/docs/ja-JP/customize/custom-domains/self-managed-certificates)しておく必要があります。
</Info>

Akamai Bot Manager および/または Akamai Account Protector を使用している場合、Akamai のリバース プロキシを構成して結果を Auth0 に送信し、その結果を [Actions で利用](./use-akamai-supplemental-signals-actions)できます。

<div id="supported-login-flows">
  # サポートされているログインフロー
</div>

Auth0 は現在、Akamai 補足シグナル向けに次のログインフローをサポートしています。

* Universal Login: 識別子 + パスワード
  * [Universal Login: Identifier First](/docs/ja-JP/authenticate/login/auth0-universal-login/identifier-first)
  * [Resource Owner Password (ROP)](/docs/ja-JP/get-started/authentication-and-authorization-flow/resource-owner-password-flow)

<div id="step-1-register-an-api-in-akamai">
  # ステップ 1: Akamai に API を登録する
</div>

Akamai がログイン試行の成否を把握できるようにするには、Akamai で API を登録し、その後、サポートしたい各 Auth0 ログインフローごとにエンドポイントを定義する必要があります。

詳細については、[Register an API on Akamai TechDocs](https://techdocs.akamai.com/api-definitions/docs/register-api) および [Add API resources on Akamai TechDocs](https://techdocs.akamai.com/api-definitions/docs/add-api-resources) を参照してください。

<AccordionGroup>
  <Accordion title="新しい Universal Login ID + パスワード">
    Akamai に API を登録するには、以下の値を使用します:

    | 項目         | 値        |
    | ---------- | -------- |
    | API ベースパス  | `/u`     |
    | API キーの送信先 | `Header` |

    APIを作成した後、以下の各Auth0エンドポイントに対してAPIリソースを追加する必要があります:

    * `/u/login/password`
    * `/u/signup`
    * `/u/signup/password`

    すべてのエンドポイントで手順は同じですが、設定値は若干異なります。

    ### API リソースを追加する

    Akamai API でリソースを構成するには、以下の値を使用します:

    <Tabs>
      <Tab title="/u/login/password">
        | プロパティ          | 値                           |
        | -------------- | --------------------------- |
        | API で未定義のパラメータ | `Specific` (`Request body`) |
        | パス             | `/login/password`           |
        | メソッド           | `POST`                      |
      </Tab>

      <Tab title="/u/signup">
        | プロパティ          | 値                           |
        | -------------- | --------------------------- |
        | API で未定義のパラメータ | `Specific` (`Request body`) |
        | パス             | `/signup`                   |
        | メソッド           | `POST`                      |
      </Tab>

      <Tab title="/u/signup/password">
        | プロパティ          | 値                           |
        | -------------- | --------------------------- |
        | API で未定義のパラメータ | `Specific` (`Request body`) |
        | パス             | `/signup/password`          |
        | メソッド           | `POST`                      |
      </Tab>
    </Tabs>

    ### メソッドにパラメータを追加する

    APIリソースを作成した後、Akamaiがログインリクエストを正しく解析できるように、`Request body`パラメータを定義する必要があります。

    以下の値を使用して `Request body` パラメータを定義してください:

    <Tabs>
      <Tab title="/u/login/password">
        | プロパティ   | 値      |
        | ------- | ------ |
        | 形式      | `JSON` |
        | 必須      | `Yes`  |
        | 本文形式を定義 | `Yes`  |
        | スキーマの詳細 | 以下を参照  |

        ```json theme={null}
        {
          "requestBody": {
            "content": {
              "application/x-www-form-urlencoded": {
                "schema": {
                  "type": "object",
                  "required": [
                    "state"
                  ],
                  "properties": {
                    "state": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 256
                    },
                    "username": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 256
                    },
                    "password": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 256
                    },
                    "action": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 256
                    }
                  }
                }
              }
            },
            "required": true
          }
        }
        ```
      </Tab>

      <Tab title="/u/signup">
        | プロパティ   | 値      |
        | ------- | ------ |
        | 形式      | `JSON` |
        | 必須      | `Yes`  |
        | 本文形式を定義 | `Yes`  |
        | スキーマの詳細 | 以下を参照  |

        ```json theme={null}
        {
          "requestBody": {
            "content": {
              "application/x-www-form-urlencoded": {
                "schema": {
                  "type": "object",
                  "required": [
                    "email",
                    "password"
                  ],
                  "properties": {
                    "email": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 256
                    },
                    "password": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 256
                    }
                  }
                }
              }
            },
            "required": true
          }
        }
        ```
      </Tab>

      <Tab title="/u/signup/password">
        | プロパティ   | 値      |
        | ------- | ------ |
        | 形式      | `JSON` |
        | 必須      | `Yes`  |
        | 本文形式を定義 | `Yes`  |
        | スキーマの詳細 | 以下を参照  |

        ```json theme={null}
        {
          "requestBody": {
            "content": {
              "application/x-www-form-urlencoded": {
                "schema": {
                  "type": "object",
                  "required": [
                    "email"
                  ],
                  "properties": {
                    "email": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 256,
                      "description": "email"
                    }
                  }
                }
              }
            },
            "required": true
          }
        }
        ```
      </Tab>
    </Tabs>
  </Accordion>

  <Accordion title="新しい Universal Login の Identifier First">
    Akamai に API を登録するには、以下の値を使用します:

    | プロパティ      | 値        |
    | ---------- | -------- |
    | API のベースパス | `/u`     |
    | API キーの送信先 | `Header` |

    APIを作成した後、以下の各Auth0エンドポイントに対してAPIリソースを追加する必要があります:

    * `/u/login`
    * `/u/signup`
    * `/u/signup/password`

    すべてのエンドポイントで手順は同じですが、設定値は若干異なります。

    ### API リソースを追加する

    Akamai API でリソースを構成するには、以下の値を使用します:

    <Tabs>
      <Tab title="/u/login">
        | プロパティ         | 値                           |
        | ------------- | --------------------------- |
        | API の未定義パラメータ | `Specific` (`Request body`) |
        | パス            | `/login`                    |
        | メソッド          | `POST`                      |
      </Tab>

      <Tab title="/u/signup">
        | プロパティ         | 値                           |
        | ------------- | --------------------------- |
        | API の未定義パラメータ | `Specific` (`Request body`) |
        | パス            | `/login/signup`             |
        | メソッド          | `POST`                      |
      </Tab>

      <Tab title="/u/signup/password">
        | プロパティ         | 値                           |
        | ------------- | --------------------------- |
        | API の未定義パラメータ | `Specific` (`Request body`) |
        | パス            | `/signup/password`          |
        | メソッド          | `POST`                      |
      </Tab>
    </Tabs>

    ### メソッドにパラメータを追加する

    APIリソースを作成した後、Akamaiがログインリクエストを正しく解析できるように、`Request body`パラメータを定義する必要があります。

    以下の値を使用して `Request body` パラメータを定義してください:

    <Tabs>
      <Tab title="/u/login">
        | プロパティ       | 値      |
        | ----------- | ------ |
        | フォーマット      | `JSON` |
        | 必須          | `Yes`  |
        | 本文フォーマットの定義 | `Yes`  |
        | スキーマの詳細     | 以下を参照  |

        ```json theme={null}
        {
          "requestBody": {
            "content": {
              "application/x-www-form-urlencoded": {
                "schema": {
                  "type": "object",
                  "required": [
                    "state"
                  ],
                  "properties": {
                    "state": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 256
                    },
                    "username": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 256
                    },
                    "password": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 256
                    },
                    "action": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 256
                    }
                  }
                }
              }
            },
            "required": true
          }
        } 
        ```
      </Tab>

      <Tab title="/u/signup">
        | プロパティ       | 値      |
        | ----------- | ------ |
        | フォーマット      | `JSON` |
        | 必須          | `Yes`  |
        | 本文フォーマットの定義 | `Yes`  |
        | スキーマの詳細     | 以下を参照  |

        ```json theme={null}
        {
          "requestBody": {
            "content": {
              "application/x-www-form-urlencoded": {
                "schema": {
                  "type": "object",
                  "required": [
                    "email",
                    "password"
                  ],
                  "properties": {
                    "email": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 256
                    },
                    "password": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 256
                    }
                  }
                }
              }
            },
            "required": true
          }
        } 
        ```
      </Tab>

      <Tab title="/u/signup/password">
        | プロパティ       | 値      |
        | ----------- | ------ |
        | フォーマット      | `JSON` |
        | 必須          | `Yes`  |
        | 本文フォーマットの定義 | `Yes`  |
        | スキーマの詳細     | 以下を参照  |

        ```json theme={null}
        {
          "requestBody": {
            "content": {
              "application/x-www-form-urlencoded": {
                "schema": {
                  "type": "object",
                  "required": [
                    "email"
                  ],
                  "properties": {
                    "email": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 256,
                      "description": "email"
                    }
                  }
                }
              }
            },
            "required": true
          }
        }
        ```
      </Tab>
    </Tabs>
  </Accordion>

  <Accordion title="ROP">
    Akamai で API を登録するには、次の値を使用します。

    | プロパティ     | 値        |
    | --------- | -------- |
    | API ベースパス | なし       |
    | API キーの場所 | `Header` |

    API を作成したら、次の各 Auth0 エンドポイントに対して API リソースを追加する必要があります。

    * `/oauth/token`

    手順はすべてのエンドポイントで同じですが、設定値が少し異なります。

    ### API リソースを追加する

    Akamai の API 上でリソースを構成するには、次の値を使用します。

    <Tabs>
      <Tab title="/oauth/token">
        | プロパティ                    | 値                           |
        | ------------------------ | --------------------------- |
        | API undefined parameters | `Specific` (`Request body`) |
        | Path                     | `/oauth/token`              |
        | Methods                  | `POST`                      |
      </Tab>
    </Tabs>

    ### メソッドにパラメーターを追加する

    API リソースを作成した後、Akamai がログインリクエストを正しく解析できるように、`Request body` パラメーターを定義する必要があります。

    `Request body` パラメーターを定義するには、次の値を使用します。

    <Tabs>
      <Tab title="/oauth/token">
        | プロパティ              | 値      |
        | ------------------ | ------ |
        | Format             | `JSON` |
        | Required           | `Yes`  |
        | Define body format | `Yes`  |
        | Schema details     | 以下を参照。 |

        ```json theme={null}
        {
          "requestBody": {
            "content": {
              "application/x-www-form-urlencoded": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "username": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 256
                    },
                    "password": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 256
                    }
                  }
                }
              }
            },
            "required": true
          }
        } 
        ```
      </Tab>
    </Tabs>
  </Accordion>
</AccordionGroup>

<div id="step-2-forward-bot-results-from-akamai-to-auth0">
  # ステップ 2: Akamai から Auth0 にボット判定結果を転送する
</div>

Akamai を設定してボット判定結果を Auth0 に転送するには、[Forward Bot Results to Origin on Akamai TechDocs](https://techdocs.akamai.com/content-protector/docs/forward-bot-results-to-origin) を参照してください。

<Note>
  `akamai-user-risk` ヘッダーは、すべてのログインリクエストに必ず含まれるわけではありません。Akamai がユーザーリスクスコアを生成した場合にのみ、このヘッダーを送信します。
</Note>

<div id="step-3-enable-processing-of-akamai-headers-in-auth0">
  # Step 3: Auth0 で Akamai ヘッダーの処理を有効化する
</div>

Auth0 Dashboard または Auth0 Management API を使用して、Akamai から送信される補足シグナルを Auth0 が受信して処理できるように構成できます。

<Tabs>
  <Tab title="Dashboard">
    Dashboard で補足シグナルを有効にするには:

    1. [Dashboard > Security > Attack Protection](#) に移動します。
    2. **Supplemental Signals** を選択します。
    3. **Enable Akamai headers** のトグルをオンにします。
  </Tab>

  <Tab title="Management API">
    Management API で補足シグナルを有効にするには:

    1. `update:attack_protection` スコープを持つ [Management API アクセストークンを取得](/docs/ja-JP/secure/tokens/access-tokens/management-api-access-tokens/get-management-api-access-tokens-for-production) します。
    2. 次のボディを指定して、Management API の [テナントの補足シグナル構成を更新](/docs/ja-JP/api/management/v2/supplemental-signals/patch-supplemental-signals) エンドポイントを呼び出します:

    ```json theme={null}
    {
      "akamai_enabled": true
    }
    ```
  </Tab>
</Tabs>

<div id="step-4-test-and-verify-configuration">
  # ステップ 4: 構成をテストして検証する
</div>

構成したログインフローごとに各エンドポイントを呼び出して、構成をテストします。

すべてを正しく構成できていれば、次のようになります。

* 関連するイベントについて、テナントログに `akamai-user-risk` および `akamai-bot` ヘッダーが含まれます。
* Post Login Action の `event` オブジェクトで、次のプロパティを使用できます。
  * `authentication.riskAssessment.supplemental.akamai.akamaiBot`
  * `authentication.riskAssessment.supplemental.akamai.akamaiUserRisk`
