Decoding a token is not verifying it
The first two segments are base64url, which is an encoding and not a lock: anybody holding a token can read every claim in it, with no key and no effort. The payload is not encrypted, and pretending otherwise is how tokens end up carrying data that should never have been in one.
What the signature adds is origin, not secrecy. It is a value only the issuer could have produced, so a verifier that checks it knows the claims were written by somebody holding the key and have not changed since. This page separates the two readings for that reason: what the token says, and separately whether the signature matches the secret you gave it.
The oldest vulnerability in the family is `alg: none`, a token that declares itself unsigned. A verifier that trusts the header hands out anything anybody asks for, which is why the panel treats that case as a finding rather than decoding it politely. The second is a header that carries its own key (`jwk`, `jku`, `x5u`): a verifier that fetches the key from the token is checking the token against itself.