If you use large enough IDs, it's practically impossible. The AES block cipher, one of the most secure encryption tools we have, uses a key-size of 128 bits. To decrypt a document, you need to guess a 128-bit number, which is hard. Bayeux also uses 128-bit client IDs, making it as easy to guess someone's Bayeux ID as to decrypt an AES cipher.
But let's make it easy for ourselves. Let's say everyone one the planet has 1,000 connections open to your Faye server, so there are this many active client IDs:
P = 7_000_000_000_000
Now the entire ID space is this big:
N = 2**128 = 340282366920938463463374607431768211456
To hijack a session, you just need to guess one of these IDs, and you'll need to, on average, try this many IDs before you get in:
N/(2*P) = 24305883351495604533098186
Now let's assume you can try a billion guesses per second, and you work for a billion days (~ 3 million years):
attempts = 1_000_000_000 * 60 * 60 * 24 * 365 * 1000_000_000
= 31536000000000000000000000
This is the order of magnitude of attempts you need to make to guess one client ID. You're going to need a lot of hardware for this, since a typical failed /meta/connect request takes a few milliseconds.
Anyway, I digress but it's worth knowing what the actual risk is.
Here's what I would do: have your client-side code request a unique 128-bit token from the server, and use the user ID from the session to store a user ID <-> token mapping. Then have the Faye client subscribe to a channel based on that token. Use your stored mapping to route messages relevant to the user. There's really no point installing an authorization extension since you'll just need to send additional, easy-to-guess information along with the token to verify it. Just rely on the size of the token to keep the user protected.
Depending on what you're doing, you may want an extension that only lets the server publish messages, but it's not essential.