Data publikacji: 4 września 2024 r., ostatnia aktualizacja: 16 października 2024 r.
Testowanie origin interfejsu Digital Credentials API rozpoczyna się od wersji 128 Chrome. Digital Credentials API to nowy interfejs API platformy internetowej, który umożliwia witrynom selektywnie żądanie weryfikowalnych informacji o użytkowniku za pomocą cyfrowych danych uwierzytelniających, takich jak prawo jazdy lub dowód osobisty przechowywany w cyfrowym portfelu.
Tło
Tożsamość cyfrowa staje się rzeczywistością, ponieważ wiele podmiotów publicznych i prywatnych zaczęło wydawać cyfrowe dokumenty tożsamości powiązane z urządzeniem. Na przykład w wybranych stanach w Stanach Zjednoczonych (np. Arizonie, Kalifornii, Kolorado, Georgii i Marylandzie) można teraz skonfigurować cyfrowe prawo jazdy i dokumenty tożsamości w aplikacjach cyfrowych portfeli, takich jak Portfel Google, na urządzeniach mobilnych. Pojawiają się też przepisy dotyczące akceptacji cyfrowych dokumentów tożsamości w przypadku niektórych weryfikacji online, np. eIDAS 2.0.
Funkcje dokumentu cyfrowego zależą od jego formatu, ale zwykle obejmują:
- Zwiększone bezpieczeństwo i prywatność: zaawansowane szyfrowanie i mocne metody uwierzytelniania pomagają chronić dane wrażliwe i zapewnić bezpieczny dostęp. Na przykład prezentowanie danych logowania jest zwykle chronione przez uwierzytelnianie użytkownika w aplikacji portfela.
- Wybiórcze udostępnianie: uprawnione podmioty mogą poprosić o wybrane informacje z uprawnień, co pozwala użytkownikom ograniczyć udostępniane dane do tych, które są potrzebne do danego przypadku użycia. Na przykład można udostępnić informację, że użytkownik ma więcej niż 18 lat, bez ujawniania jego daty urodzenia.
- Współpraca: dane uwierzytelniające powinny być zgodne z międzynarodowymi standardami, co umożliwi ich kompatybilność z różnymi systemami i krajami, ułatwiając akceptację w różnych krajach.
- Weryfikowalność: udostępnione dane uwierzytelniające są podpisywane cyfrowo przez wystawcę; RP może zweryfikować ten podpis, aby potwierdzić autentyczność danych.
Ze względu na to, że cyfrowe dokumenty tożsamości można zweryfikować, mogą one umożliwiać takie zastosowania jak:
- Weryfikacja wieku: poproś o potwierdzenie wieku, aby zweryfikować wiek użytkownika przed wyświetleniem treści z ograniczeniem wiekowym lub zakupem produktów z ograniczeniem wiekowym.
- Weryfikacja tożsamości: żądanie podania imienia i adresu w celu potwierdzenia tożsamości osoby w ramach przestrzegania przepisów lub zapobiegania oszustwom.
- Sprawdzanie uprawnień do kierowania pojazdem: weryfikacja uprawnień do kierowania pojazdem (np. podczas wynajmu samochodu).
Witryny zaczęły komunikować się bezpośrednio z aplikacjami portfeli mobilnych (np. za pomocą niestandardowych schematów URL) w celu żądania danych logowania do konta cyfrowego w różnych przypadkach użycia. Przeglądarki widzą w tym możliwość zwiększenia bezpieczeństwa, odporności na nadużycia i łatwości obsługi tej interakcji za pomocą specjalnego interfejsu API.
Przedstawiamy interfejs Digital Credentials API
Interfejs API danych logowania to nowy interfejs API platformy internetowej, który umożliwia witrynom RP żądanie przedstawienia danych logowania z aplikacji portfela. Interfejs API jest dostępny w Chrome jako wersja próbna origin od wersji 128.
Interfejs API jest niezależny od protokołu, co pozwala RP określić protokół na podstawie własnych wymagań. Gdy RP wysyła żądanie, przeglądarka wysyła je do systemu operacyjnego urządzenia mobilnego, który wyszukuje odpowiednie dane logowania w zainstalowanych aplikacjach portfeli. Jeśli zostanie znaleziony jakiś portfel, system operacyjny urządzenia mobilnego poprosi użytkownika o jego wybranie i wyśle żądanie do wybranego portfela. Po uwierzytelnieniu lokalnym portfel zwraca odpowiedź zawierającą żądane dane uwierzytelniające.
Na początku Chrome będzie obsługiwać interfejs API w Chrome na Androidzie, aby żądać danych logowania z aplikacji portfela na tym samym urządzeniu. W przyszłości planujemy dodać do Chrome na komputery obsługę żądania danych logowania na różnych urządzeniach z innego urządzenia mobilnego.
Po uruchomieniu Portfel Google zostanie zintegrowany z interfejsem API cyfrowych danych logowania, co umożliwi wybranym firmom i organizacjom wysyłanie użytkownikom prośby o przedstawienie dokumentu tożsamości online za pomocą Chrome na Androidzie oraz weryfikowanie autentyczności przesyłanych danych przez sprawdzenie podpisu kryptograficznego. Aby skorzystać z tej funkcji, wypełnij ten formularz i wyraź zainteresowanie akceptacją cyfrowych dokumentów tożsamości z Portfela Google.
Interfejs API będzie też wkrótce używany przez konta Google do weryfikacji daty urodzenia niektórych użytkowników. Użytkownicy mieszkający w obsługiwanym stanie w Stanach Zjednoczonych będą mogli użyć stanowego dowodu tożsamości lub prawa jazdy w dostępnych aplikacjach portfela (w tym Portfelu Google), aby bezproblemowo udostępnić Google tylko datę urodzenia, bez podawania innych danych tożsamości. Dzięki temu użytkownicy mogą w sposób zapewniający ochronę prywatności wykazać Google, że spełniają wymagania wiekowe dotyczące konta.
Wypróbuj
Wymagania:
- Usługi Google Play w wersji 23.40 lub nowszej
- Chrome 128 lub nowsza
- Włącz flagę na stronie
chrome://flags#web-identity-digital-credentials
Aby wypróbować interfejs Digital Credentials API, wykonaj te instrukcje:
- Zainstaluj aplikację demo portfela, postępując zgodnie z instrukcjami.
- Pobierz aplikację demo portfela na urządzenie z Androidem. Kod źródłowy można znaleźć w repozytorium danych tożsamości fundacji OpenWallet.
- Aby zainstalować aplikację, uruchom polecenie
adb install -t <path-to-apk>
.
- Uruchom aplikację IC Wallet i udostępnij demonstracyjne cyfrowe prawo jazdy (mDL).
- Kliknij przycisk menu i wybierz Dodaj własnoręcznie podpisany dokument.
- Otwórz stronę https://digital-credentials.dev w Chrome w wersji 128 lub nowszej.
- Kliknij Request Credentials (OpenID4VP) (Poproś o dane logowania (OpenID4VP)).
Zapoznaj się z wersją demonstracyjną, która korzysta z witryny https://digital-credentials.dev, aby deweloperzy mogli generować żądania danych logowania dla różnych atrybutów:
Demo działa w następujący sposób:
Jak działa interfejs API
Interfejs API cyfrowych danych logowania opiera się na interfejsie API zarządzania danymi logowania, ale jest niezależnym interfejsem API: navigator.identity
. Po wywołaniu funkcji navigator.identity.get()
witryna może poprosić o cyfrowe dane logowania zapisane w aplikacji mobilnego portfela.
// Gets a CBOR with specific fields out of mobile driver's license as an mdoc
const controller = new AbortController();
const {protocol, data} = await navigator.identity.get({
signal: controller.signal,
digital: {
providers: [{
protocol: "openid4vp",
request: {
response_type: "vp_token",
nonce: "n-0S6_WzA2Mj",
client_metadata: {...},
presentation_definition: {...}
}
}],
}
});
Interfejs podstawowego interfejsu API jest podobny do interfejsu navigator.credentials.get()
, ale obsługuje tylko typ danych "digital"
. W typie dokumentu cyfrowego dodaj tablicę providers
zawierającą element IdentityRequestProvider
z tymi podstawowymi parametrami:
protocol
: określenie protokołu wymiany za pomocą ciągu znaków. W czasie testów pochodzenia opracowywany był protokół"openid4vp"
.request
: wpisz parametry akceptowane przez aplikacje cyfrowego portfela dla wybranego protokołu. W przypadku"openid4vp"
parametry są zdefiniowane w specyfikacji OpenID for Verifiable Presentation (OID4VP) for the W3C Digital Credentials API.
Przykład ładunku do typu dokumentu cyfrowego z użyciem OID4VP:
{
protocol: 'openid4vp',
request: {
response_type: 'vp_token',
nonce: 'gf69kepV+m5tGxUIsFtLi6pwg=',
client_metadata: {},
presentation_definition: {
id: 'mDL-request-demo',
input_descriptors: [{
id: "org.iso.18013.5.1.mDL",
format: {
mso_mdoc: {
alg: ["ES256"]
}
},
constraints: {
limit_disclosure: "required",
fields: [
{
path: ["$['org.iso.18013.5.1']['family_name']"],
intent_to_retain: false
}, {
path: ["$['org.iso.18013.5.1']['given_name']"],
intent_to_retain: false
}, {
path: ["$['org.iso.18013.5.1']['age_over_21']"],
intent_to_retain: false
}
]
}
}],
}
}
}
W ramach tego żądania portfele z mDL na urządzeniu udostępniają weryfikowalny zestaw danych uwierzytelniających, który zawiera:
- Nazwisko użytkownika.
- Imię użytkownika.
- Wartość logiczna wskazująca, czy użytkownik ma ukończone 21 lat.
Oto przykładowy ładunek odpowiedzi:
{
data: '{\n "vp_token": "o2d2ZXJzaW9uYz..."\n}'
id: '',
protocol: 'openid4vp',
type: 'digital'
}
W tym przykładzie żądanie danych logowania zostało przesłane za pomocą protokołu "openid4vp"
, a w odpowiedzi w właściwości data
znajduje się wartość "vp_token"
. Aby dowiedzieć się, jak zanalizować odpowiedź i zweryfikować dane logowania, zapoznaj się ze specyfikacją OpenID for Verifiable Presentation (OID4VP) for the W3C Digital Credentials API.
Interfejs API cyfrowych danych logowania jest obsługiwany w Chrome na Androida w ramach testowania origin. Chrome na komputerach i iOS nie obsługuje tej funkcji w tej chwili. W przypadku innych silników przeglądarek aktywne rozmowy są prowadzone w ramach grupy społecznościowej W3C Web Incubator.
Udział w okresie próbnym usługi pochodzenia
Podczas tworzenia aplikacji możesz lokalnie włączyć interfejs API cyfrowych poświadczeń, włączając flagę Chrome chrome://flags#web-identity-digital-credentials
w Chrome 128 lub nowszej.
Ta funkcja jest też dostępna jako próbna wersja źródłowa. Wersje próbne origin umożliwiają wypróbowanie nowych funkcji i przekazanie opinii o ich użyteczności, praktyczności i skuteczności społeczności standardów internetowych. Więcej informacji znajdziesz w artykule Pierwsze kroki z testami pochodzenia. Aby zarejestrować się w ramach tego lub innego okresu próbnego, wejdź na stronę rejestracji.
- Poproś o token dla swojego źródła.
- Dodaj token do swoich stron. Możesz to zrobić na 2 sposoby:
- Dodaj tag
origin-trial
<meta>
do nagłówka każdej strony. Może to wyglądać na przykład tak:<meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">.
- Jeśli możesz skonfigurować serwer, możesz też dodać token za pomocą nagłówka HTTP
Origin-Trial
. Wygenerowany nagłówek odpowiedzi powinien wyglądać mniej więcej tak:Origin-Trial: TOKEN_GOES_HERE.
- Dodaj tag
Podziel się opinią
Jeśli masz uwagi na temat interfejsu Digital Credentials API, prześlij je za pomocą dedykowanego śledzika problemów Chromium.