← Analytics / analytics / graphql-api / tutorials
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:
rayID: Jedinečný identifikátor přiřazený autentizačnímu požadavku.datetimeStart: Nejstarší čas události, na kterou se lze dotázat (ne dříve než 16. září 2022).datetimeEnd: Nejnovější čas události, na kterou se lze dotázat. Nezapomeňte zadat časový rozsah, který zahrnuje událost přihlášení, na niž se dotazujete.
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
-
Viz Nakonfigurujte token Analytics API kde najdete další informace o konfiguraci a oprávněních. ↩