Configure Akamai to Send Supplemental Signals

Before you start

To configure Akamai to send supplemental signals to your Auth0 tenant, you must configure Akamai as a reverse proxy.

If you use Akamai Bot Manager and/or Akamai Account Protector, you can configure your reverse proxy in Akamai to send the results to Auth0 and make them available in Actions.

Supported login flows

Auth0 currently supports the following login flows for Akamai supplemental signals:

  • Universal Login: Identifier + Password

  • Universal Login: Identifier First

  • Resource Owner Password (ROP)

Step 1: Register an API in Akamai

For Akamai to know when login attempts succeed or fail, you’ll need to register an API in Akamai, and then define an endpoint for each Auth0 login flow you’d like to support.

To learn more, read Register an API on Akamai TechDocs and Add API resources on Akamai TechDocs.

New Universal Login Identifier + Password

Use the following values to register your API in Akamai:

Property Value
API base path /u
API key location Header

After you’ve created your API, you’ll need to add an API resource for each of the following Auth0 endpoints:

  • /u/login/password

  • /u/signup

  • /u/signup/password

The process is the same for all endpoints, but the configuration values differ slightly.

Add API resource

Use the following values to configure a resource on your Akamai API:

Property Value
API undefined parameters Specific (Request body)
Path /login/password
Methods POST

Add parameters to methods

After you’ve created your API resource, you’ll need to define the Request body parameter so Akamai can parse login requests properly.

Use the following values to define the Request body parameter:

Property Value
Format JSON
Required Yes
Define body format Yes
Schema details See below.

{
  "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
  }
}

Was this helpful?

/

New Universal Login Identifier First

Use the following values to register your API in Akamai:

Property Value
API base path /u
API key location Header

After you’ve created your API, you’ll need to add an API resource for each of the following Auth0 endpoints:

  • /u/login

  • /u/signup

  • /u/signup/password

The process is the same for all endpoints, but the configuration values differ slightly.

Add API resource

Use the following values to configure a resource on your Akamai API:

Property Value
API undefined parameters Specific (Request body)
Path /login
Methods POST

Add parameters to methods

After you’ve created your API resource, you’ll need to define the Request body parameter so Akamai can parse login requests properly.

Use the following values to define the Request body parameter:

Property Value
Format JSON
Required Yes
Define body format Yes
Schema details See below.

{
  "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
  }
}

Was this helpful?

/

ROP

Use the following values to register your API in Akamai:

Property Value
API base path None.
API key location Header

After you’ve created your API, you’ll need to add an API resource for each of the following Auth0 endpoints:

  • /oauth/token

Add API resource

Use the following values to configure a resource on your Akamai API:

Property Value
API undefined parameters Specific (Request body)
Path /oauth/token
Methods POST

Add parameters to methods

After you’ve created your API resource, you’ll need to define the Request body parameter so Akamai can parse login requests properly.

Use the following values to define the Request body parameter:

Property Value
Format JSON
Required Yes
Define body format Yes
Schema details See below.

{
  "requestBody": {
    "content": {
      "application/x-www-form-urlencoded": {
        "schema": {
          "type": "object",
          "required": [
            "username",
            "password",
            "grant_type"
          ],
          "properties": {
            "username": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "maxItems": 256
            },
            "password": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "maxItems": 256
            },
            "grant_type": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "maxItems": 256
            },
            "client_id": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "maxItems": 256
            },
            "client_secret": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "maxItems": 256
            },
            "audience": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "maxItems": 256
            },
            "scope": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "maxItems": 256
            }
          }
        }
      }
    },
    "required": true
  }
}

Was this helpful?

/

Step 2: Forward bot and user risk results from Akamai to Auth0

Configure Akamai to forward bot results

To configure Akamai to forward bot results to Auth0, read Forward Bot Results to Origin on Akamai TechDocs.

Configure Akamai to forward user risk results

To configure Akamai to forward user risk results to Auth0, read Forward User Risk Results to Origin on Akamai TechDocs.

Step 3: Enable processing of Akamai headers in Auth0

You can configure Auth0 to accept supplemental signals sent from Akamai in the Auth0 Dashboard or with the Auth0 Management API.

To enable supplemental signals in the Dashboard:

  1. Go to Dashboard > Security > Attack Protection.

  2. Select Supplemental Signals.

  3. Enable the toggle for Enable Akamai headers.

Step 4: Test and verify configuration

Test your configuration by calling each endpoint for the login flow(s) you have configured.

If you’ve configured everything properly:

  • The akamai-user-risk and akamai-bot headers will be present in your tenant logs for related events.

  • You can use the following properties in the post-login Action event object:

    • authentication.riskAssessment.supplemental.akamai.akamaiBot

    • authentication.riskAssessment.supplemental.akamai.akamaiUserRisk

Learn more