07.05 / 70 min

Test GraphQL and WebSocket authorization together

Apply stored identities and authorization policies to queries, subscriptions, channels, tenant fields, and event replay.

By the endCompare request and subscription identityMutate room and tenant fieldsConfirm multi-object behavior
Controlled exercise

Use only the Academy Lab on 127.0.0.1:5177. Do not copy these tests to a public system without explicit written authorization.

01

Prove the target boundary

Create or reopen the Academy Lab project and send GET /health. Continue only when the target is 127.0.0.1 and local_only is true. The public-recon lessons require a separately authorized target and are never run against an unrelated domain.

GET http://127.0.0.1:5177/health
Expected result

200 with "local_only": true.

02

Run the GraphQL matrix

Use resource and resourceInsecure with User A, User B, Admin, and Anonymous. Interpret 200 errors semantically.

03

Run the room matrix

Send subscribe for user_b through /ws-secure and /ws-insecure under the same four identities. Record handshake and message authorization separately.

04

Replay captured events

Capture User B's event_replay request and apply User A. Compare secure denial with insecure foreign secret exposure.

05

Mutate channel and tenant fields

Test only captured room, channel, object, and tenant candidates. Require two foreign resources or rooms before raising confidence.

06

Test subscription abuse

Distinguish unauthorized subscription, unauthorized event replay, duplicate delivery, and harmless public events. Save the exact abusive action.

MASTERY CHECKPOINT

Prove it before moving on.

One evidence set shows identity application across GraphQL query, WebSocket handshake, subscription, room mutation, and event replay.