Cryptographic agility is ensured by requiring an all-new protocol in case a different algorithm is used, or any other protocol property is changed (the newly defined auth scheme "vapid" is hard-wired to ECDSA NIST P-256, and there is no version field in the JWT token). Considering that the JWT header and JWK fields describe their signing method, making it cryptographically agile, pinning the algorithm appears to be a strange choice (see the example in 2.4). The last paragraph of Security Considerations remains a mystery to me. What is a "gradual migration"? With no key rollover, any change of key simply breaks all clients with using that key. The last sentence implies that such a hard failure is acceptable. That's a rather simplistic protocol design. The example in 2.4 does not appear to be correct. I cannot decode "t": > base64 --decode eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJhdWQiOiJodHRwczovL3B1c2guZXhhbXBsZS5uZXQiLCJleHAiOjE0NTM1MjM3NjgsInN1YiI6Im1haWx0bzpwdXNoQGV4YW1wbGUuY29tIn0.i3CYb7t4xfxCDquptFOepC9GAu_HLGkMlMuCGSK2rpiUfnK9ojFwDXb1JrErtmysazNjjvW2L9OkSSHzvoD1oA {"typ":"JWT","alg":"ES256"}base64: ungültige Eingabe