1. Provider setup
2. Protect a loader
Header propagation contract
authenticateRequest() may rotate/exchange session state and returns response headers that must be preserved.
getAuth vs requireAuth
getAuth: returns auth state without forcing protectionrequireAuth: runsprotect()and throws for unauthenticated requests
