Earlier quoted context omitted.
And if you want to be able to authenticate users to a service that you do not want to send private keys to?
Then sign / encrypt the token with a private key and distribute a public key to the untrusted peers. Since you're just using bog-standard cryptography primitives you can change them at will to match your use case. Need to handle untrusted peers? Asymmetric keys are the answer.
Nobody has to implement the FULL spec, you only need to allow what your environment needs.