Przepływ na tym samym urządzeniu a między urządzeniami
Przepływ na tym samym urządzeniu i między urządzeniami to dwie postacie tej samej wymiany w OpenID4VCI i OpenID4VP: portfel i strona na jednym telefonie, połączone deep linkiem lub przekierowaniem, albo strona na komputerze i portfel na telefonie, połączone kodem QR.
W przepływie na tym samym urządzeniu portfel i strona lub aplikacja znajdują się na tym samym telefonie. Strona przekazuje odwiedzającego przez deep link lub przekierowanie, portfel się otwiera, osoba zatwierdza to, o co jest proszona, a portfel odsyła ją z powrotem na stronę tą samą drogą. OpenID4VP zwraca prezentację we fragmencie tego przekierowania, więc sesja przeglądarki, która rozpoczęła wymianę, jest tą samą, która ją kończy.
W przepływie między urządzeniami odwiedzający zaczyna w przeglądarce na komputerze, a portfel ma na telefonie. Strona wyświetla żądanie jako kod QR, portfel go skanuje i wysyła wynik bezpośrednio do backendu strony, a nie do przeglądarki na biurku. Strona na komputerze musi potem dowiedzieć się, że wymiana się zakończyła, zwykle przez polling lub websocket, dlatego przepływ między urządzeniami zawsze angażuje backend.
Oba protokoły zakładają, że obsługujesz obie postacie. OpenID4VP nazywa je swoimi dwoma przepływami, a OpenID4VCI opisuje ten sam podział dla Credential Offer, który może dotrzeć do posiadacza na urządzeniu z portfelem lub dowolnym innym kanałem. To, który przepływ dostanie odwiedzający, zależy od tego, gdzie akurat się znajduje, a nie od ustawienia wybranego raz na zawsze, więc usługa publiczna potrzebuje obu działających ścieżek.
Doświadczenie użytkownika różni się nakładem pracy i sposobem, w jaki coś może pójść nie tak. Przepływ na tym samym urządzeniu to krótsza ścieżka: bez drugiego ekranu, bez aparatu, bez przekazywania między urządzeniami. Przepływ między urządzeniami kosztuje skanowanie, ale zatrzymuje odwiedzającego przy dużym ekranie, na którym już pracował, i jest jedyną opcją, gdy portfela nie ma na urządzeniu, na którym odbywa się praca. Przepływ na tym samym urządzeniu zawodzi, gdy nie ma zainstalowanego portfela lub deep link otwiera złą aplikację, a przepływ między urządzeniami, gdy kod wygaśnie lub telefon nie ma połączenia.
Różnica w bezpieczeństwie jest realna i przemawia za tym samym urządzeniem. Ponieważ portfel zwraca odpowiedź przez przekierowanie na własnym urządzeniu, atakujący, który skopiuje żądanie, nie ma jak przejąć odpowiedzi. Odpowiedź w przepływie między urządzeniami wędruje poza przeglądarką do backendu strony, więc to strona musi powiązać kod z sesją przeglądarki, która go wyświetliła. Bez tego powiązania ktoś może wziąć kod z kontrolowanej przez siebie sesji, podsunąć go ofierze i sprawić, że jej poświadczenia dokończą logowanie atakującego.
Kod QR jest też powierzchnią ataku phishingowego, bo sam kod nic nie mówi czytającemu o tym, kto pyta. To portfel, a nie kod, musi pokazać tożsamość weryfikatora i dokładne żądanie, zanim cokolwiek zostanie udostępnione. IETF ma osobną best current practice dla tej klasy ataków w przepływach między urządzeniami, a OpenID4VCI z tego samego powodu dodaje do oferty kod transakcji: dociera on kanałem, który już uwierzytelnił posiadacza, więc przechwyconej po drodze oferty nie może zrealizować nikt inny.
Przeczytaj pełne wyjaśnienie
Ta strona podaje krótką definicję. Nasze wyjaśnienie pokazuje, co to oznacza w praktyce: kto bierze w tym udział, jak to działa i co zmienia się dla Twojej organizacji.
Przepływy na tym samym urządzeniu i między urządzeniami wyjaśnionePowiązane terminy
Czy muszę obsługiwać oba przepływy?
Jeśli twoja usługa jest otwarta dla wszystkich, tak. O wyborze decyduje to, gdzie jest odwiedzający i które urządzenie ma jego portfel, a nie preferencja, którą konfigurujesz. Narzędzie back office używane tylko na zarządzanym komputerze może zacząć wyłącznie od przepływu między urządzeniami, a aplikacja wyłącznie mobilna tylko od przepływu na tym samym urządzeniu, ale każda usługa, do której obywatel lub klient dociera na własnych warunkach, spotka się z oboma.
Czy przepływ między urządzeniami jest mniej bezpieczny niż na tym samym urządzeniu?
Nie z natury, ale wymaga zabezpieczenia, które przepływ na tym samym urządzeniu ma za darmo. Na tym samym urządzeniu odpowiedź wraca przez przekierowanie na urządzeniu z portfelem, więc nie da się jej przekierować do cudzej sesji. Między urządzeniami odpowiedź trafia do twojego backendu poza przeglądarką, więc musisz powiązać kod QR z sesją przeglądarki, która go wyświetliła, i odrzucić wynik, który przychodzi dla jakiejkolwiek innej sesji.
Przy poprawnej implementacji oba są porównywalne. Bez niej to właśnie przepływ między urządzeniami można przekazać ofierze.