Yayınlanma tarihi: 3 Ekim 2025
Digital Credentials API'nin Chrome 141'den itibaren varsayılan olarak etkinleştirildiğini duyurmaktan mutluluk duyuyoruz. Ayrıca iOS 26, Chrome ve diğer tarayıcılarda Digital Credentials API desteği sunar. Bu API, web'de kimlik doğrulama işlemine yeni bir güvenlik ve gizlilik düzeyi getirerek web sitelerinin kullanıcılardan doğrulanabilir bilgiler istemesi ve alması için standartlaştırılmış bir yöntem sunar.
Başarılı bir Origin Trial'ın ardından Digital Credentials API artık hem Android'de aynı cihazda kimlik bilgisi sunumunu hem de masaüstü Chrome'da cihazlar arası sunumu destekliyor.
Arka plan
Kimliğin internette doğrulanması bugüne kadar karmaşık bir süreç olmuştur ve genellikle kullanıcıların kimliklerinin taranmış kopyalarını yüklemesi gerekmiştir. Bu uygulama genellikle gerekenden daha fazla veri paylaşılmasına neden olur ve kullanıcılar için önemli gizlilik endişeleri yaratır. Geliştiriciler için de risk oluşturur. Çünkü çözümlerinin, genellikle tek tip olmayan hassas verileri güvenli ve gizliliği koruyacak şekilde işleyip depolayabilmesini sağlamaları gerekir.
Aynı zamanda, eIDAS 2.0 gibi düzenlemeler, hükümetlerin halka dijital kimlik araçları sağlamasını zorunlu kılıyor. Bu dijital kimlik cüzdanları, kimlik ve yaş kanıtı da dahil olmak üzere çeşitli kimlik bilgilerini saklayabilmelidir. Online servis sağlayıcılar, kullanıcı kimliğini doğrulamak için bu kimlik bilgilerini isteyebilir.
W3C'deki web standartları topluluğu, dijital kimlik bilgilerinin hem kullanıcıların gizlilik taleplerini hem de geliştiricilerin kullanıcı verilerini doğrulama ihtiyaçlarını karşılayabileceğini fark ederek bir çözüm geliştirdi: Dijital Kimlik Bilgileri API'si. Dijital Kimlik Bilgileri API'si, kullanıcı bilgilerini doğrulamak için yerleşik bir arayüz sunarak bu sorunu çözmeyi amaçlar. Bu arayüz, alternatiflere kıyasla güvenliği, gizliliği ve kullanıcı deneyimini iyileştirir. Bu API sayesinde kullanıcıların artık kimlik taramaları gibi hassas belgeleri birden fazla web sitesine yüklemesi gerekmiyor. Bunun yerine, web siteleri yalnızca güvenilir sağlayıcılardan ihtiyaç duydukları belirli, kriptografik olarak imzalanmış verileri isteyerek kullanıcılarıyla güven ilişkisi kurabilir.
Temel özellikler
Dijital Kimlik Bilgileri API'si üç temel ilke üzerine kurulmuştur: gizlilik, platformlar arası destek ve standardizasyon.
Gizlilik
Digital Credentials API, internetteki gizliliği ve güvenliği artırır. Bu API, kullanıcıların mobil cüzdanlarındaki dijital kimlikleri web sitelerine sunarak belirli bilgileri doğrulamasına ve temel hassas verileri açıklamadan kullanmasına olanak tanır. Örneğin, API, kullanıcının tam doğum tarihini açıklamadan 18 yaşından büyük olduğunu doğrulayabilir. "Seçici açıklama" ilkesi, web sitelerinin yalnızca gerekli minimum bilgiyi almasını sağlar.
Digital Credentials API, Google'ın Longfellow ZK'si gibi sıfır bilgi kanıtı (ZKP) protokolleriyle de uyumludur. Bu protokoller, başka hiçbir bilgiyi açığa çıkarmadan belirli bir kimlik iddiasının doğru olduğuna dair şifreleme kanıtı döndürerek kullanıcı gizliliğini sağlar.
Platformlar arası destek
Dijital Kimlik Bilgileri API'si, kullanıcıların cihazlar arasında doğrulanmış bilgileri rahatça sunabilmesi için farklı platformları desteklemeyi amaçlar.
Android'de: Kullanıcılara, yüklü cüzdan uygulamalarından kimlik bilgisi seçmelerine olanak tanıyan yerleşik bir kullanıcı arayüzü sunar.
Masaüstünde: Kullanıcılar, masaüstü tarayıcılarında mobil cüzdanlarındaki kimlik bilgilerini bir web sitesine gösterebilir. Sistem, QR kodu tarayarak masaüstü ve mobil cihaz arasında güvenli, uçtan uca şifrelenmiş ve kimlik avına karşı korumalı bir bağlantı oluşturur. Bu bağlantı, kullanıcının yakınlığını BLE üzerinden doğrulamak için CTAP protokolünü kullanır. Böylece kullanıcının fiziksel olarak mevcut olduğu ve her iki cihazı da kontrol ettiği doğrulanır.
Standartlaştırma
Birlikte çalışabilirlik önemlidir. Chrome'daki Digital Credentials API, protokol platformundan bağımsızdır ve OpenID4VP ve ISO 18013-7'nin Ek C'si gibi çeşitli sunum protokolleriyle uyumludur. Apple, Safari 26.0'dan itibaren Digital Credentials API desteğini de kullanıma sundu.
Ayrıca, Dijital Kimlik Bilgileri API'si, Android'deki yerleşik kimlik bilgisi yönetimi desteği ve uyumlu cüzdanların büyüyen ekosistemi üzerine kurulmuştur. Google Cüzdan, bu özelliği ilk kullananlardan biridir. Samsung Cüzdan ve 1Password'ün desteği de yakında eklenecektir.
Origin denemesinden bu yana neler değişti?
Daha önceki kaynak denememize katılanlar, Digital Credentials API'nin navigator.identity.get()
'den navigator.credentials.get()
'ye taşındığını fark edecek. Bu değişiklik, Credential Management API ile daha geniş bir kimlik birleştirme çalışmasıyla uyumlu hale getirmek için yapıldı.
Ayrıca, providers
parametresinin adı requests
olarak, request
parametresinin adı ise data
olarak değiştirildi.
Uygulama
Dijital Kimlik Bilgileri API'sini entegre etmek için iki ana adım gerekir: özellik algılama ve kimlik bilgisi isteğinde bulunma. Geliştiriciler, uygulamalarının kimlik bilgilerini kullanıp kullanamayacağını belirlemek için özel mantık da uygulamalıdır.
Özellik algılama
"Dijital kimlik bilgisiyle doğrulayın" düğmesini göstermeden önce, kullanıcının tarayıcısında Digital Credentials API'nin kullanılabilir olup olmadığını kontrol edin.
if (typeof DigitalCredential !== "undefined") {
// Digital Credentials API is supported
} else {
// Digital Credentials API is not supported
}
Kimlik bilgisi isteğinde bulunma
Kimlik bilgisi isteğinde bulunmak için navigator.credentials.get()
parametresiyle digital
çağrısı yapılır. Dijital kimlik bilgisi türünde, aşağıdaki temel parametreleri içeren bir requests
dizisi ekleyin:
DigitalCredentialGetRequest
protocol
: Bir dizeyle değişim protokolü belirtin. Örneğin,"openid4vp"
veya"org-iso-mdoc"
. Protokolün tarayıcı tarafından desteklenip desteklenmediğini aşağıdaki şekilde tespit edin:if (DigitalCredential.userAgentAllowsProtocol("example-protocol")) { // Create a request with this protocol } else { // Protocol is not supported }
data
: Belirtilen protokol için dijital cüzdan uygulamalarının kabul ettiği parametreleri içeren bir nesne."openid4vp"
için parametreler, W3C Digital Credentials API spesifikasyonu için OpenID for Verifiable Presentation (OID4VP)'de tanımlanır.try { const digitalCredential = await navigator.credentials.get({ digital: { requests: [{ protocol: "openid4vp-v1-unsigned", data: { response_type: "vp_token", nonce: "[some-nonce]", client_metadata: {...}, dcql_query: {...} } }] } }); // Decrypt payload respons and verify credentials on the backend const response = await fetch("/verify", { method: "POST", body: JSON.stringify(digitalCredential.data), headers: { 'Content-Type': 'application/json' } }); } catch (e) { // Handle errors, such as the user canceling the request console.error(e); }
Örneğin, kullanıcının soyadını, adını ve kullanıcının 21 yaşından büyük olup olmadığını belirten bir Boole değerini istemek için aşağıdaki yükü belirtebilirsiniz:
{
protocol: 'openid4vp-v1-unsigned',
data: {
response_type: 'vp_token',
nonce: '[some-nonce]',
// Contains the Verifier metadata values, including supported credential formats and response encryption public key
client_metadata: {
// Supported credential formats. Refer to the documentation for specific values
vp_formats_supported: {...},
// Public key(s). Refer to the documentation for more detail.
jwks: {...}
},
dcql_query: {
// A wallet will try to find credentials it holds that match these definitions.
credentials: [
{
// A locally unique identifier for this credential definition within the query.
id: "cred_vc",
format: "dc+sd-jwt",
meta: {
// 'vct_values' specifies the Verifiable Credential allowed type.
// In this case, it's a European Digital Identity (EUDI) Personal Identification Data (PID) credential.
vct_values: [
"urn:eudi:pid:1"
]
},
// 'claims' is an array of specific data that's being requested.
claims: [
{
// The path ["age_equal_or_over", "18"] corresponds to accessing `credential.age_equal_or_over['18']`.
path: [
"age_equal_or_over",
"18"
]
}
]
}
]
}
}
}
Bu örnekte, client_metadata
desteklenen biçimlerin listesini belirtmelidir. Hangi değerlerin kullanılabileceğini görmek için şartnameye bakın. client_metadata
içinde ayarlanan isteğe bağlı jwks
değeri, yanıtın şifrelenmesi için kullanılan ortak anahtarları içermelidir. Daha fazla örnek için demo kodunu da inceleyebilirsiniz.
Şifrelenmiş yanıt yükü içeren bir DigitalCredential nesnesi örneğini aşağıda bulabilirsiniz:
{
// This is an example for a response using an OpenID4VP protocol.
// The format of the 'data' object will differ for other protocols.
"protocol": "openid4vp-v1-unsigned",
"data": {
// To decrypt this JWE payload, use the private key.
// The decrypted payload will be a JSON object containing the
// Verifiable Presentation in the 'vp_token' claim.
"response": "[jwe-token]"
}
}
Bu örnekte, sistem openid4vp-v1-unsigned
protokolüyle kimlik bilgisi ister ve yanıtta data
özelliğinde response
bulunur.
Yanıtı ayrıştırmanın tam olarak nasıl yapılacağı protokole bağlıdır. Genellikle yapmanız gerekenler:
- Yanıt yükünü şifre çözme Şifre çözme yöntemi, kullanılan protokole bağlıdır.
openid4vp
(JWE kullanılarak) veorg-iso-mdoc
(Hibrit Ortak Anahtar Şifreleme kullanılarak) için yükün nasıl şifreleneceğini öğrenin. - İmzaları ve veren kuruluşu doğrulayın. Daha fazla bilgi için Online Acceptance of Digital Credentials (Dijital Kimlik Bilgilerinin Online Kabulü) dokümanına bakın.
Farklı protokollerle ilgili kod örneklerini görmek için demoya yönelik kodu veya canlı olarak barındırılan sürümü inceleyin.
Sertifikayı veren kuruluşa duyulan güveni doğrulama
Dijital kimlik bilgilerinin kriptografik imzası, kimlik bilgilerinin gerçek olduğunu kanıtlar. Ancak geliştiriciler, veren kuruluşun kendi kullanım alanları için uygun ve güvenilir olduğunu doğrulamalıdır. Örneğin, bir e-ticaret sitesi, üniversite öğrencilerine indirim yapmak için akredite bir üniversite tarafından verilmiş bir kimlik bilgisi ister ve diğer kuruluşlar tarafından imzalanmış kimlik bilgilerini reddeder. Sertifika verene duyulan güveni doğrulamanın yaygın bir yolu, onaylanmış sertifika verenlerin bir listesini tutmak ve eşleşmeyen tüm sertifika verenleri reddetmektir.
Başlayın
Oluşturmaya hazır mısınız? Bilmeniz gerekenler.
- Kullanılabilirlik: Chrome 141 veya daha yeni sürümlerde, farklı platformlarda Dijital Kimlik Bilgileri API'si varsayılan olarak etkinleştirilir.
- Ön koşullar: Kullanıcıların uyumlu bir cihaza (ör. Google Play Hizmetleri'nin 24.0 veya sonraki sürümlerinin yüklü olduğu Android cihaz ya da 26 veya sonraki sürümlerin yüklü olduğu iOS cihaz) sahip olması gerekir. Cihazda, Dijital Yeterlilik Belgesi API'sini destekleyen bir dijital cüzdan uygulaması (ör. Google Cüzdan veya demo cüzdan) yüklü olmalıdır.
- Demoyu deneyin: Kullanıcı deneyimini anlamanın ve uygulamanızı test etmenin en iyi yolu, https://verifier.multipaz.org adresindeki canlı demoyu Chrome 141 veya daha yeni bir sürümle denemektir.
Kaynaklar
Daha fazla bilgi için aşağıdaki kaynakları inceleyin:
- Geliştirici kılavuzu: Digital Credentials API (Dijital Kimlik Bilgileri API'si)
- Spesifikasyon: W3C Dijital Kimlik Bilgileri
- Android desteği: Dijital kimliklerin Android'de desteklenmesi
Görüşlerinizi paylaşın
Dijital Kimlik Bilgileri API'si kullanıma sunulduğuna göre, bu API ile geliştirme deneyiminiz hakkında bilgi edinmek istiyoruz. Geri bildiriminizi paylaşmak veya hataları bildirmek için sorun kaydı oluşturun.