問題
state node の JWT 署名検証 (InfraAuthToken::signing_message()) は、パース済みの header/payload 構造体を serde_json で再シリアライズして署名対象 (header_b64.payload_b64) を再構築している。
これは発行側の JSON バイト列と bit-exact に一致した場合しか検証が通らない:
修正方針
from_jwt はワイヤ上の header.payload セグメントをそのまま保持し、署名検証はそのセグメントに対して行う (JWS の標準的な検証方法)。再シリアライズは検証には使わない。
参考
PR #58 の実機検証で発覚。関連: #57 (委譲 JWT 検証の発行仕様整合)
🤖 Generated with Claude Code
問題
state node の JWT 署名検証 (
InfraAuthToken::signing_message()) は、パース済みの header/payload 構造体を serde_json で再シリアライズして署名対象 (header_b64.payload_b64) を再構築している。これは発行側の JSON バイト列と bit-exact に一致した場合しか検証が通らない:
test_auth_generatorのjson!はアルファベット順で、発行仕様と不一致 → PR fix(test-auth-generator): canonical JWT payload field order + auth-failure logging #58 で修正)修正方針
from_jwtはワイヤ上のheader.payloadセグメントをそのまま保持し、署名検証はそのセグメントに対して行う (JWS の標準的な検証方法)。再シリアライズは検証には使わない。参考
PR #58 の実機検証で発覚。関連: #57 (委譲 JWT 検証の発行仕様整合)
🤖 Generated with Claude Code