Obracanie kodów kreskowych

Wprowadzenie

Kody paskowe wyglądają jak zwykłe kody kreskowe, ale zmieniają się okresowo zwykle co minutę, a terminal/czytnik jest tak zaprogramowany, aby najnowszego. To zabezpieczenie zmniejsza ryzyko związane z robienie zrzutów ekranu z kodem kreskowym, w szczególności kradzież biletu lub nieautoryzowany bilet sprzedaż. Funkcja rotacji kodów kreskowych może też działać jako kod zastępczy w przypadku urządzeń, które nie mogą korzystają z technologii smart tap ze względu na brak obsługi NFC (brak sprzętu lub wyłączone oprogramowanie).

Dokumentacja API

Szczegółowe informacje techniczne dotyczące rotacji kodów kreskowych znajdziesz w dokumentacji Typ RotatingBarcode.

Przykładowy ładunek

JSON
{
  "rotatingBarcode": {
    "type": "QR_CODE",
    "valuePattern": "MyRotatingBarcode-{totp_timestamp_seconds}-{totp_value_0}",
    "alternateText": "Ticket#: 1234567890",
    "totpDetails": {
      "algorithm": "TOTP_SHA1",
      "periodMillis": "3000",
      "parameters": [
        {
          "key": "3132333435363738393031323334353637383930",
          "valueLength": "8"
        }
      ]
    }
  }
}

Mechanizmy awaryjne

Na urządzeniu użytkownika w danym momencie używany jest tylko jeden mechanizm wykorzystania karty. w zależności od konfiguracji karty i możliwości urządzenia. Używane są te typy promocji (w kolejności według priorytetu):

  1. Smart Tap: jeśli określono ładunek smart tap, a urządzenie obsługuje NFC/HCE
    • Pamiętaj, że użytkownik może to zmienić, klikając „Pokaż kod”, co wymusza wyświetlanie obracającego się kodu kreskowego/statycznego kodu kreskowego.
  2. Rotacja kodu kreskowego: jeśli określono rotację kodu kreskowego
  3. Statyczny kod kreskowy: jeśli określono ładunek kodu kreskowego

Podanie wielu ładunków wykorzystania może zapewnić, że wszyscy użytkownicy będą obsługiwani, ale może mieć wpływ na bezpieczeństwo. Przede wszystkim użycie statycznego kodu kreskowego jako rotacja kodu kreskowego eliminuje większość korzyści zapewnianych przez obracających się kodów kreskowych. Statyczny kod kreskowy będzie wyświetlany tylko w widokach internetowych lub w przypadku klientów, którzy nie obsługują rotacji kodów kreskowych. Od dzisiaj wszystkich klientów Portfela Google z obsługą rotacji kodów kreskowych.

Zapisz proces

Interfejs API Portfela Google oferuje kilka procesów, w tym:

  • tworzenie zajęć dotyczących transportu publicznego w czasie rzeczywistym lub z wyprzedzeniem;
  • Przesłanie pełnych obiektów w tokenie JWT lub zapisanie ich przed czas, a następnie odwołuj się do nich za pomocą identyfikatora w JWT
  • aktualizowanie obiektów po ich zapisaniu;

Proponowane pole rotacji kodu kreskowego jest zgodne ze wszystkimi tymi przepływami. jednak w celu poprawy bezpieczeństwa sugerujemy wykonanie tych czynności:

  • Wywołaj interfejs API object:insert, aby wstawić kartę do serwera Portfela Google i skonfigurować przycisk Dodaj do Portfela Google, aby odwołują się do konkretnego obiektu za pomocą identyfikatora w tokenie JWT. Dzięki temu powstały w ten sposób token JWT nie zawiera tajnego klucza rotacji kodu kreskowego.
  • Użyj klucza obiektu tajnego dla hasła jednorazowego z zakresu pojedynczej karty
  • Jeśli klucz nie zostanie zaktualizowany, powinien być ważny przez okres ważności karnetu. Nie spodziewamy się, aby ten klucz był aktualizowany w żadnej częstotliwości w trakcie normalnego działania.

Poniższy diagram przedstawia przepływ między różnymi podmiotami w przypadku typowej integracji:

Diagram sekwencji dla rotacji kodów kreskowych