KSeF API - jak prawidłowo zarządzać tokenami w integracji
Ostatnio dużo pytań dostję o tokeny w KSeF, więc postanowiłem napisać krótki praktyczny poradnik na podstawie tego co udało mi się ogarnąć podczas integracji.
**Rodzaje tokenów:**
- `SessionToken` - do autoryzacji requestów (ważny 10 min)
- `RefreshToken` - do odnawiania sesji (ważny 1h)
- `ChallengeToken` - do autoryzacji transakcji (jednorazowy)
**Praktyczne wskazówki:**
1. **Zawsze implementuj refresh mecanizm**. Nie wysyłaj logowania przy każdym requeście - to bez sensu. Sprawdzaj czy token jest ważny i odnawiaj go używając refresh tokena.
2. **Obsłuż błąd 401 globalnie**. Kiedy dostaniesz 401, automatycznie spróbuj odnowić token. Jeśli refresh też zwróci 401, to doiero rób pełne logowanie.
3. **Challenge token to pułapka**. Ten token dostajesz w odpowiedzi na niektóre operacje i musisz go użyć w kolejnym requeście w headerze `Ksef-Challenge-Token`. Bez tego dostaniesz błąd.
```typescript
// Przykład obsługi w Node.js
if (response.status === 401) {
const newSession = await this.refreshSession();
// retry original request with new token
}
```
4. **Loguj się raz na sesję aplikacji**, nie przy każdej operacji. W środowisku demo można się logować częściej, ale w produkcji lepiej oszczędzać requesty.
5. **Przechowuj tokeny bezpiecznie** - nie w localStorage w przeglądarce, tylko w zmiennych sesyjnych lub encrypted storage.
Czy ktoś miła jakieś inne problemy z tokenami? Szczególnie interesuje mnie jak radzicie sobie z wielowątkowością - czsem mam race condition przy odnawianiu tokenów.
6 odpowiedzi
Twoja odpowiedź
Zaloguj się, aby odpowiedzieć w tej dyskusji.