diff --git a/tests/unit/test_auth_service.py b/tests/unit/test_auth_service.py index 42d1c64bc..5e5464a3c 100755 --- a/tests/unit/test_auth_service.py +++ b/tests/unit/test_auth_service.py @@ -458,8 +458,15 @@ class TestJWTService: def test_verify_token_tampered_signature(self, service): """篡改签名的token无法验证""" token = service.create_access_token(user_id="user_123") - # 篡改最后一个字符 - tampered = token[:-1] + ("A" if token[-1] != "A" else "B") + # 篡改签名部分中间的字符(JWT格式: header.payload.signature) + # 改最后一个字符不可靠(可能是padding),改签名中间确保验证失败 + parts = token.rsplit(".", 1) + assert len(parts) == 2, "JWT格式不对,应该有两个点分隔三部分" + signature = parts[1] + # 篡改签名中间的几个字符 + mid = len(signature) // 2 + tampered_sig = signature[:mid] + ("X" if signature[mid] != "X" else "Y") + signature[mid + 1 :] + tampered = parts[0] + "." + tampered_sig with pytest.raises(InvalidTokenError): service.verify_token(tampered)