3.8 KiB
3.8 KiB
🔍 NAV API v3 Fix Audit - Hiányosságjelentés
Dátum: 2026-06-07
Vizsgált Issue: #227
Forrásdokumentáció: docs/nav_api_v3_fix_summary.md
Összefoglaló
A docs/nav_api_v3_fix_summary.md dokumentációban leírt 3 javítási lépésből egyik sem lett végrehajtva. Az alábbi táblázat mutatja a pontos állapotot.
Részletes Hiányosság-leképezés
1. .env fájl - ❌ Idezőjelek még mindig jelen
| Mező | Jelenlegi érték | Helyes érték |
|---|---|---|
NAV_API_PASSWORD |
'Tevelegelek&99' (aposztrófokkal, 14 karakter) |
Tevelegelek&99 (12 karakter) |
NAV_API_CALLER_TAX_NUMBER |
"48952046133" (idézőjellel, 12 karakter) |
48952046133 (11 karakter) |
Következmény:
passwordHash = SHA-512("'Tevelegelek&99'")→ ROSSZ hash (aposztrófokkal)caller_tax_number_core[:8]→'"4895204'→ ROSSZ adószám
2. backend/app/core/config.py - ❌ HIÁNYZIK a strip_quotes field_validator
A config.py:130-136 sorokban a NAV_API_* mezők definiálva vannak, de nincs hozzáadva a field_validator.
Hiányzó kód (beszúrandó a config.py:136 sor után):
@field_validator('NAV_API_PASSWORD', 'NAV_API_SIGN_KEY', 'NAV_API_EXCHANGE_KEY', 'NAV_API_CALLER_TAX_NUMBER')
@classmethod
def strip_quotes(cls, v: str) -> str:
if v:
v = v.strip()
if len(v) >= 2 and v[0] == v[-1] and v[0] in ('"', "'"):
v = v[1:-1]
return v
3. backend/app/services/nav_service.py - ❌ HIÁNYZIK a .strip() hívás
A nav_service.py:134-138 sorokban és a nav_service.py:127-131 sorokban is hiányzik a .strip():
# JELENLEGI (hibás):
target_tax_number_core = (
tax_number
.replace("-", "")
.replace(" ", "")[:8]
)
# HELYES:
target_tax_number_core = (
tax_number
.strip()
.replace("-", "")
.replace(" ", "")[:8]
)
# JELENLEGI (hibás) - caller_tax_number_core:
caller_tax_number_core = (
settings.NAV_API_CALLER_TAX_NUMBER
.replace("-", "")
.replace(" ", "")[:8]
)
# HELYES:
caller_tax_number_core = (
settings.NAV_API_CALLER_TAX_NUMBER
.strip()
.replace("-", "")
.replace(" ", "")[:8]
)
Javítási Sorrend (Kötelező)
| # | Fájl | Művelet | Parancs |
|---|---|---|---|
| 1 | .env |
Idézőjelek eltávolítása | Kézi szerkesztés |
| 2 | backend/app/core/config.py |
strip_quotes field_validator hozzáadása |
Szerkesztés |
| 3 | backend/app/services/nav_service.py |
.strip() hozzáadása mindkét helyen |
Szerkesztés |
| 4 | Konténer újraindítás | docker compose restart sf_api |
docker compose restart sf_api |
| 5 | Teszt | Lekérdezés futtatása | docker exec sf_api python3 -c "from app.services.nav_service import NavService; import asyncio; result = asyncio.run(NavService.query_taxpayer('24742063')); print(result)" |
Gyökérok Elemzés
A jelenlegi INVALID_REQUEST_SIGNATURE hiba oka:
- A
passwordHashaposztrófokkal együtt lett hash-elve → a NAV szerver nem ismeri fel a jelszót - A
caller_tax_numberidézőjellel együtt kerül a<user><taxNumber>mezőbe → a NAV szerver a hívó felet sem tudja azonosítani - Mivel a fenti két érték hibás, a teljes
requestSignatureis érvénytelen lesz, mert a NAV szerver a felhasználó azonosítása után számolja ki a saját oldalán a várható signature-t