Files
service-finder/docs/nav_api_v3_fix_audit.md
2026-06-10 08:06:07 +00:00

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:

  1. A passwordHash aposztrófokkal együtt lett hash-elve → a NAV szerver nem ismeri fel a jelszót
  2. A caller_tax_number idézőjellel együtt kerül a <user><taxNumber> mezőbe → a NAV szerver a hívó felet sem tudja azonosítani
  3. Mivel a fenti két érték hibás, a teljes requestSignature is é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