INTEGRITY Dokumentace

Dotazování přihlašovacích událostí Access pomocí GraphQL

V tomto příkladu použijeme GraphQL Analytics API k získání protokolů pro přihlašovací událost Access. Tyto protokoly se hodí zejména ke zjištění, proč uživatel obdržel 403 Forbidden, protože obsahují další data nad rámec toho, co se zobrazuje v Access logs na dashboardu.

Následující volání API požádá o protokoly jedné přihlašovací události Access a vypíše požadovaná pole. Autentizační požadavek je identifikován svým Ray ID, který získáte z 403 Forbidden stránka zobrazená uživateli.

Budete muset vložit své <CLOUDFLARE_ACCOUNT_TAG>, vaše přihlašovací údaje API v <API_TOKEN>1, a následující proměnné nahraďte vlastními hodnotami:

Volání API

echo '{ "query":
  "query accessLoginRequestsAdaptiveGroups($accountTag: string, $rayId: string, $datetimeStart: string, $datetimeEnd: string) {
    viewer {
      accounts(filter: {accountTag: $accountTag}) {
        accessLoginRequestsAdaptiveGroups(limit: 100, filter: {datetime_geq: $datetimeStart, datetime_leq: $datetimeEnd, cfRayId: $rayId}, orderBy: [datetime_ASC]) {
          dimensions {
            datetime
            isSuccessfulLogin
            hasWarpEnabled
            hasGatewayEnabled
            hasExistingJWT
            approvingPolicyId
            cfRayId
            ipAddress
            userUuid
            identityProvider
            country
            deviceId
            mtlsStatus
            mtlsCertSerialId
            mtlsCommonName
            serviceTokenId
          }
        }
      }
    }
  }",
  "variables": {
    "accountTag": "<CLOUDFLARE_ACCOUNT_TAG>",
    "rayId": "74e4ac510dfdc44f",
    "datetimeStart": "2022-09-20T14:36:38Z",
    "datetimeEnd": "2022-09-22T14:36:38Z"
}
}' | tr -d '\n' | curl --silent \
https://api.cloudflare.com/client/v4/graphql \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data @- | jq .

Odpověď

{
  "data": {
    "viewer": {
      "accounts": [
        {
          "accessLoginRequestsAdaptiveGroups": [
            {
              "dimensions": {
                "approvingPolicyId": "",
                "cfRayId": "744927037ce06d68",
                "country": "US",
                "datetime": "2022-09-02T20:56:27Z",
                "deviceId": "",
                "hasExistingJWT": 0,
                "hasGatewayEnabled": 0,
                "hasWarpEnabled": 0,
                "identityProvider": "nonidentity",
                "ipAddress": "2a09:bac0:15::814:7b37",
                "isSuccessfulLogin": 0,
                "mtlsCertSerialId": "",
                "mtlsCommonName": "",
                "mtlsStatus": "NONE",
                "serviceTokenId": "",
                "userUuid": ""
              }
            }
          ]
        }
      ]
    }
  },
  "errors": null
}

Výsledky dotazu můžete porovnat se svými zásadami Access a zjistit tak, proč byl uživatel blokován. Pokud například vaše aplikace vyžaduje platný certifikát mTLS, Access blokoval výše uvedený požadavek, protože mtlsStatus, mtlsCommonName, a mtlsCertSerialId jsou prázdné.

Poznámky pod čarou

  1. Viz Nakonfigurujte token Analytics API kde najdete další informace o konfiguraci a oprávněních. ↩