1.7 KiB
1.7 KiB
Access Control
Source:
src/content/docs/actors/access-control.mdxCanonical URL: https://rivet.dev/docs/actors/access-control Description: Authorize actions, queue publishes, and event subscriptions with explicit hooks.
Use access control to decide what authenticated clients are allowed to do.
This is authorization, not authentication:
- Use authentication to identify who is calling.
- Use access-control rules to decide what they can do after connecting.
Permission Surfaces
RivetKit authorization is explicit per surface:
onBeforeConnectrejects unauthenticated or malformed connections.- Action handlers (
actions.*) enforce action permissions. queues.<name>.canPublishallows or denies inbound queue publishes.events.<name>.canSubscribeallows or denies event subscriptions.
Fail By Default
Use deny-by-default rules everywhere:
- Keep
onBeforeConnectstrict and reject invalid credentials. - In each action, explicitly allow expected roles and throw
forbiddenotherwise. - In
canPublishandcanSubscribe, returntrueonly for allowed roles and end withreturn false.
Return Value Contract
canPublish and canSubscribe must return a boolean:
true: allowfalse: deny withforbidden
Returning undefined, null, or any non-boolean throws an internal error.
Notes
canPublishonly applies to queue names defined inqueues.- Incoming queue messages for undefined queues are ignored and the publish succeeds as completed.
canSubscribeonly applies to event names defined inevents.- Broadcasting an event not defined in
eventsstill publishes to subscribers.
Source doc path: /docs/actors/access-control