Przejdź do nawigacji

Agent SDK Sekrety i HMAC Podpisywanie

Chroń dane uwierzytelniające agenta API i poznaj, w jaki sposób SDK generuje podpisy żądań HMAC-SHA256 ze znacznikami czasu i odpornymi na powtarzanie.

Zobacz jako Markdown

Żądania Agent SDK są uwierzytelniane przy użyciu sekretu partnera API. Zachowaj ten sekret w zaufanej usłudze zaplecza i pozwól SDK wygenerować pola do podpisu, jeśli to możliwe.

Dwa protokoły podpisywania

Podpisywanie Agent SDK wykorzystuje posortowane pola żądań, znacznik czasu oparty na sekundach i wartość jednorazową. Bezpośrednie żądania Developer API korzystają z osobnego procesu opisanego w Poproś o podpisanie. Nie używaj ponownie jednego formatu ładunku dla drugiego.

Zasada podpisywania

W przypadku żądań Agent SDK:

  1. Wyklucz pole sign.
  2. Pomiń pola z pustymi wartościami.
  3. Posortuj pozostałe nazwy pól w kolejności ASCII.
  4. Połącz pola jako k=v&k2=v2.
  5. Oblicz HMAC-SHA256 podpis szesnastkowy za pomocą apiSecret.

Wartości tablicy są serializowane jako kompaktowe JSON przed dołączeniem do ładunku podpisującego. Na przykład platformUserIds znakuje jako ["1188041528"], podając platformUserIds=["1188041528"] w ładunku k=v. Zachowaj kolejność elementów tablicy, podwójne cudzysłowy i identyfikatory ciągów; nie wstawiaj spacji formatujących ani nie używaj Java List.toString() (np. [1188041528]). SDK automatycznie obsługuje tę serializację.

SDK powinien zbudować tę wartość na podstawie tych samych danych, które wysyła. Zmiana podpisanego pola po wygenerowaniu podpisu powoduje niepowodzenie weryfikacji.

SDK-zarządzane pola

PoleŹródłoOpis
agentCodeSDK konfiguracjaKod agenta partnerskiego.
znacznik czasuAktualny czas serweraZnacznik czasu Uniksa w sekundach.
chwilowoBezpieczna wartość losowaLosowy ciąg znaków chroniący przed ponownym odtwarzaniem.
podpisaćHMAC-SHA256Poproś o podpis.
walutaDomyślna walutaUżywane, gdy przelew/konto APIs pomija walutę.

Tajne przechowywanie

  • Załaduj apiSecret z menedżera tajnych danych zaplecza lub konfiguracji chronionego środowiska wykonawczego.
  • Nigdy nie umieszczaj sekretu w pakietach frontendowych, aplikacjach mobilnych, klientach stacjonarnych, zrzutach ekranu lub zgłoszeniach pomocy technicznej.
  • Trzymaj oddzielnie dane uwierzytelniające do programowania, testowania i produkcji.
  • Ogranicz dostęp do usług i operatorów, którzy tego wymagają.
  • Redaguj podpisy żądań, wartości autoryzacji i wpisy tajne z dzienników.
  • Jeśli istnieje podejrzenie narażenia, unieważnij i zastąp dane uwierzytelniające.

Ochrona zegara i odtwarzania

SDK obejmuje timestamp i nonce, aby zmniejszyć ryzyko powtórki. Synchronizuj zegary zaplecza i nie używaj ponownie ręcznie skonstruowanej wartości jednorazowej. Jeśli weryfikacja podpisu nie powiedzie się, przed ponowną próbą potwierdź skonfigurowany klucz tajny, czas serwera, pola serializowane i środowisko.

Lista kontrolna integracji

SprawdzaćOczekiwany wynik
Tajna lokalizacjaTajny magazyn przeznaczony wyłącznie dla zaplecza.
ŚrodowiskoBaza URL i dane uwierzytelniające należą do tego samego środowiska.
Obsługa w terenieSDK generuje timestamp, nonce i sign.
Wycięcie lasuIdentyfikatory firm pozostają widoczne, gdy dane uwierzytelniające zostaną usunięte.
ObrótWłaściciel danych uwierzytelniających i proces wymiany są udokumentowane.

Powiązane dokumenty dotyczące bezpieczeństwa