OpenID uyum testlerinden öğrendiklerimiz ve açık kaynak yaptığımız kit
OpenID Foundation'ın issuer ve verifier test planlarını (OpenID4VCI, OpenID4VP, HAIP, FAPI 2.0) sandbox'ımızda çalıştırdık, yirmiye yakın bulguyu düzelttik ve kiti yayımladık.
Tamga Network 14 dk okuma
21–27 Ekim 2026 tarihleri arasında OpenID Foundation'ın iki uyum test planını Tamga'nın sandbox ortamında çalıştırdık. Issuer planıyla kimlik servisimizi (HAIP ve FAPI 2.0 Security Profile ile birlikte OpenID4VCI 1.0 Final, 63 modül), verifier planıyla da Tamga Verify'ı (HAIP ile birlikte OpenID4VP 1.0 Final, 14 modül) sınadık. Issuer planının son çalıştırmasında başarısız modül kalmadı, verifier planının son turunda ise ne başarısız modül ne de uyarı var. Bu sonuca yirmiye yakın kod değişikliğiyle ulaştık ve her değişiklik bir şartname maddesine dayanıyor. Bizden sonra aynı testlere girecek ekipler daha az uğraşsın diye öğrendiklerimizi oidf-conformance-kit adlı açık kaynak bir kitte (Apache-2.0) topladık.
AB uyumlu bir ağ için uyum testi neden önemli?
OpenID4VP'ye harfiyen uyan iki ürün yine de birbiriyle anlaşamayabilir, çünkü şartname birçok noktada birden fazla seçeneğe izin verir. Yüksek güvenceli birlikte çalışabilirlik profili HAIP, bu seçeneklerden tek bir küme belirleyerek boşlukların çoğunu kapatır ve Avrupa dijital kimlik ekosistemi de bu profile dayanır. Tamga kendini AB uyumlu diye tanıtıyor. Bu iddiayı yalnız kendi testlerimizle sınarsak kendi ödevimize kendimiz not vermiş oluruz.
Kendi testlerimiz ve uyum vektörlerimiz, kodu şartnameleri bizim anladığımız biçimle karşılaştırır. OpenID Foundation'ın conformance suite adlı test aracı ise işe başka birinin okumasını katar. Vakfın geliştirdiği bu açık kaynak araç protokolün karşı tarafının yerine geçer ve özensiz bir uygulamanın yanlış yapabileceği yüzlerce durumu tek tek dener. Vakfın sertifika programında kullanılan araç da budur. Araç bizimle aynı fikirde değilse ikimizden biri yanılıyordur ve hangimizin yanıldığını bulmak bu işin en yararlı kısmıdır.
Neyi, neye karşı sınadık?
| Issuer planı | Verifier planı | |
|---|---|---|
| Plan | oid4vci-1_0-issuer-haip-test-plan | oid4vp-1final-verifier-haip-test-plan |
| Şartnameler | OpenID4VCI 1.0 Final, HAIP 1.0, FAPI 2.0 Security Profile | OpenID4VP 1.0 Final, HAIP 1.0 |
| Sınanan servis | kimlik servisi, id.sandbox.tamga.network | Tamga Verify, verify.sandbox.tamga.network |
| Seçenekler | SD-JWT VC, cüzdanın başlattığı yetki kodu akışı, istemci kanıtı (client attestation), DPoP | SD-JWT VC, direct_post.jwt, x509_hash, imzalı request_uri |
| Aracın rolü | cüzdanın yerine geçer; kendi cüzdan kanıtını ve anahtar kanıtını kullanır | cüzdanın yerine geçer; kendi test anahtarıyla imzaladığı sahte bir AB PID'i (urn:eudi:pid:1) sunar |
| Modül | 63: 23 OpenID4VCI ve 40 FAPI 2.0 | 14 |

Testlerde aracın demo.certification.openid.net adresindeki barındırılan sürümünü kullandık. Aracın imza sertifikalarını yalnız sandbox güven listesine ekledik. Cüzdan kanıtını imzalayan sertifika bu listede test cüzdan sağlayıcısı olarak, PID'i imzalayan sertifika ise ayrı bir test listesinde yer alıyor. Gerçek ağın listelerinde hiçbir değişiklik yapılmadı.
Planların kapsamını iki pratik karar belirledi. Issuer planını bir kurumun issuer'ı yerine kimlik servisine karşı çalıştırdık, çünkü kurumların yetkilendirme adımı kişiden önce kimlik belgesini göstermesini istiyor ve test aracı bunu yapamıyor. Ayrıca aracın kendi kanıtlarında politikamızın zorunlu tuttuğu iki alan bulunmuyor. Bunlardan biri cüzdan kanıtındaki iptal kaydı, öteki de anahtar kanıtında anahtarın nasıl saklandığını gösteren durum bilgisi. Sandbox bu iki alanı isteğe bağlı sayıyor, ama gerçek ağda ikisi de zorunlu olmaya devam ediyor.
Sonuçlar ne oldu?
Issuer planı 21–23 Ekim arasında üç tur ve bir tekrar çalıştırmasıyla tamamlandı. İlk turda 63 modülün 42'sini çalıştırdık ve hataların çoğu bu turda ortaya çıktı. İkinci turda 63 modülün hepsi çalıştı; 29'u geçti, 22'si uyarı verdi, 5'i başarısız oldu. Üçüncü tur ve son tekrar, kalan sorunları kapattı.
| Plan | Tur | Geçti | Uyarı | Başarısız | İnceleme | Atlandı |
|---|---|---|---|---|---|---|
| Issuer (63) | son tekrar, 23 Ekim | 53 | 2 | 0 | 4 | 4 |
| Verifier (14) | 1. tur, 27 Ekim | 0 | 7 | 0 | 6 | 1 |
| Verifier (14) | 2. tur, 27 Ekim | 7 | 0 | 0 | 6 | 1 |
Verifier'ın ilk turunda "uyarı" alan yedi modül asıl denetimi aslında geçmişti, yani Tamga bozuk sunumu doğru biçimde reddetmişti. Yedisinde de aynı uyarı vardı ve sorunu aynı gün düzelttik.
"Geçti" dışında kalan her satırın bir açıklaması var:
- İki uyarı (issuer metadata'sı, düz ve imzalı hâli). Metadata'mızda
credential_reuse_policyalanı bulunuyor. Bu alan, toplu belge verme ve belgelerin yeniden kullanımıyla ilgili politikayı anlatır; ETSI TS 119 472-3 tanımlar, AB'nin ARF'si de kullanır. Aracın şeması isecredential_metadataiçine ek alan konmasına izin vermiyor. Bu yüzden tek bir meşru uzantı şemanın bütün bir dalını geçersiz kılıyor ve araç ardındanscope,proof_types_supportedgibi standart alanları da bilinmeyen alan diye işaretliyor. Aracın izin listesi uzantının adını susturabiliyor, ama arkasından gelen bu hata zincirini durduramıyor. Alan bir AB standardından geldiği için onu koruyoruz. Sorunu, yeniden üretme adımları ve iki olası çözümle birlikte aracı geliştiren ekibe bildirdik. - İnceleme. Bazı olumsuz testler "ekran görüntüsü yükleyin" adımıyla biter, çünkü araç sunucumuzun kişiye gösterdiği hata sayfasını göremez ve bu sayfayı bir insanın onaylaması gerekir. Verifier planında da aynı nedenle, Tamga Verify'ın sunumu kabul ettiği ya da sonuç sayfasında reddettiği her durum (yanlış belge türü, iptal edilmiş belge) incelemeyle sonuçlanır. Doğrulayıcının yanıtı doğrudan HTTP 400 ile geri çevirdiği durumlar ise kendiliğinden geçer.
- Atlandı. Üç issuer modülü şifreli belge yanıtını sınıyor. HAIP bu özelliği isteğe bağlı bıraktığı için metadata'mızda sunmuyoruz. Bir modül de yenileme belirtecini (refresh token) sınıyor. Kimlik servisimiz yenileme belirtecini yalnız kısa ömürlü sıfır bilgi kopyaları için veriyor (ADR-0062). Aracın isteği bu kapsamı istemediği için belirteç verilmiyor ve modül atlanıyor. Verifier planında da
request_uri_method=postseçeneğini sunmadığımız için ilgili modül atlanıyor.
Testler ne buldu, biz neyi değiştirdik?
Aşağıda yirmiye yakın değişikliği konularına göre grupladık. Her maddede değişikliği gerektiren şartname maddesi yazıyor, parantez içindeki adlar da aracın loglarında geçen denetim adları.

Metadata ve görünüm
- İstemci kanıtı algoritmaları. Yetkilendirme sunucusunun metadata'sı
attest_jwt_client_authyöntemini sunuyordu, ama bu yöntemle birlikte verilmesi gerekenclient_attestation_signing_alg_values_supportedveclient_attestation_pop_signing_alg_values_supportedlisteleri eksikti (attestation-based client authentication §10.1). İki liste de artık["ES256"]değerini taşıyor. - Final sürümün biçimi. Belge yapılandırmalarının her birinde hâlâ üst düzeyde bir
displayalanı vardı ve görünüm nesnelerinde dillangadıyla yazılıyordu. OpenID4VCI 1.0 Final (§12.2.4) ise görünüm bilgisinicredential_metadata.displayaltına koyuyor ve alanın adınılocaleolarak belirliyor. Bu değişikliği yalnız issuer metadata'sında yaptık. SD-JWT VC tür metadata'sındalangkalıyor, çünkü o şartnamenin kullandığı ad bu. - Dil etiketleri. Aracın yeni bir denetimi dil etiketlerini doğruluyor. Bizim etiketlerimiz geçerliydi, ama kayıtta
EN-usgibi bir değerin ya da aynı dilin iki kez yazılmasının önünde bir engel yoktu. Artık görünüm değerlerinde kanonik BCP 47 etiketleri kullanılıyor ve her dil için tek girdi var (paketler 0.7.3).
Kopyaları birbirine bağlayabilecek zaman alanları
- Yuvarlanmış
iatveexp. Belgeler verildikleri anı saniyesine kadar taşıyordu. Bu yüzden bir paketteki on kopya ya da aynı kişiye verilen iki belge, zaman bilgisi üzerinden birbiriyle ilişkilendirilebiliyordu (RFC 9901 §10.1). Artık verilme ve bitiş zamanlarını saat başına aşağı yuvarlıyoruz; mdoc belgelerindeki geçerlilik alanları da aynı biçimde yuvarlanıyor. - Toplu belge verme için eklenen iki yeni denetim, ortak listede her kopyanın farklı ve tahmin edilemez bir durum sırası almasını istiyor. Bu denetimleri zaten geçiyorduk, yine de ikisi için regresyon testi ekledik.
DPoP, PAR ve yetkilendirme sunucusu
DPoP, erişim belirtecini istemcinin elindeki bir anahtara bağlayan yöntemdir. PAR (pushed authorization request) ise yetki isteğinin parametrelerinin, tarayıcıdan geçmeden önce doğrudan sunucuya gönderilmesidir.
- PAR'da DPoP. PAR ucu, gelen DPoP kanıtını
dpop_jktdeğeriyle karşılaştırmadan kabul ediyordu. Token ucu da PAR'da kullanılandan farklı bir DPoP anahtarını kabul ediyordu (RFC 9449 §10). Artık kanıt PAR'da doğrulanıyor, yetki kodu o anahtara bağlanıyor ve token ucuna farklı bir anahtarla gelen istekinvalid_granthatası alıyor. htunormalleştirmesi.htualanında ana makine adı büyük harfle yazılmış ya da:443bağlantı noktası açıkça belirtilmiş DPoP kanıtlarını reddediyorduk. Oysa RFC 9449 §4.3, karşılaştırmadan önce RFC 3986'ya göre normalleştirme yapılmasını istiyor. Artık şema ve ana makine adı büyük/küçük harf ayrımı yapılmadan karşılaştırılıyor ve varsayılan bağlantı noktası hesaba katılmıyor.- Testten önce kapattıklarımız. İlk turdan önce henüz çalışmamış FAPI 2.0 modüllerini okuduk ve bulacakları sorunları önceden düzelttik. PAR ucu artık POST dışındaki yöntemlere 405 döndürüyor (RFC 9126 §2.3). Yinelenen parametre içeren istekler ve PAR içinde
request_urigönderen isteklerinvalid_requestalıyor. Yalnızresponse_type=codekabul ediliyor,plainPKCE reddediliyor ve kanıtlanan istemciden farklı birclient_idgönderen istekinvalid_clientalıyor. Bir yetki kodu verildikten sonra aynırequest_uriyeniden kullanılamıyor (RFC 9126 §4). Bu modüllerin hepsi ilk çalıştırmada geçti.
TLS
- Şifre takımları. TLS 1.2 bağlantılarında hâlâ CBC ve SHA-1 kullanan bir takım kabul ediliyordu. FAPI 2.0 (§5.2.2, BCP 195 ile birlikte) yalnız önerilen takımlara izin verdiği için sunucu artık yalnız ECDHE ile AES-GCM takımlarını sunuyor.
Belirteçler
- Erişim belirtecinin yeniden kullanımı. Erişim belirteçlerimiz tek kullanımlıktı. FAPI testlerinin olağan senaryosu ise aynı belirteçle birkaç belge isteği gönderiyor ve bu yüzden başarısız oldu. Şartnameler belirtecin yeniden kullanılmasına izin verdiği için kuralı ADR-0059 ile değiştirdik. Belirteç artık ömrü boyunca (en fazla beş dakika) birden çok istekte kullanılabiliyor. Bu izin yalnız belirtecin kapsadığı yapılandırmalar için geçerli, toplamda en fazla on kopya alınabiliyor ve her istekte aynı DPoP anahtarı kullanılmak zorunda.
- Yetki kodunun yeniden kullanımı. Bir yetki kodu ikinci kez kullanıldığında, ilk kullanımda verilen belirteçler de artık geçersiz oluyor (RFC 6749 §4.1.2, RFC 9700 §4.5).
- Yenileme belirtecinin neye bağlı olduğu. Yenileme belirteçlerini DPoP anahtarına bağlıyorduk. Test aracı ise belirteci yenilerken aynı istemciyi ama yeni bir DPoP anahtarını kullanıyor. RFC 9449 §5 ve attestation-based client authentication §10.3, yenileme belirtecini istemci örneğine (client instance) bağlıyor. ADR-0060 ile belirteci cüzdan kanıtındaki örnek anahtarına bağladık. Böylece DPoP anahtarı değişse de belirteç çalışmaya devam ediyor.
- İlk belgeden önce yenileme. Araç, token yanıtını alır almaz, henüz belge istemeden belirteci yeniliyor. Yenileme belirtecinin gösterdiği kayıt o sırada henüz oluşmadığı için bu isteği reddediyorduk. RFC 6749 §6 ise yenileme belirtecinin verildiği andan itibaren kullanılabilmesine izin veriyor ve artık bizde de öyle.
Hata kodları ve başlıklar
- Bilinmeyen bir
credential_identifier, genelinvalid_credential_requesthatası yerineunknown_credential_identifierdöndürüyor (OpenID4VCI §8.3.1.2). code_verifieriçermeyen bir token isteğiinvalid_grantalıyor ve yetki kodu bir daha kullanılamıyor (RFC 7636 §4.6).- Token ucunun hata yanıtları dahil bütün yanıtlarında
Cache-Control: no-storebaşlığı var (RFC 6749 §5.1). - Belge ucunun döndürdüğü 401 yanıtı, hatayı ve kabul edilen algoritmayı bildiren bir
WWW-Authenticate: DPoPbaşlığı taşıyor (RFC 9449 §7.1). Bu düzeltme, issuer turlarından sonra yaptığımız protokol incelemesinde ortaya çıktı. - Başka bir istemcinin
request_uriadresini açan kişi artık ham JSON yerine bir HTML hata sayfası görüyor.
Belge yanıtının biçimi
- Belge yanıtımız, her site için ayrı takma ad üretmekte kullanılan tohumu (seed) fazladan bir alan olarak taşıyordu. Araç, belge yanıtlarındaki bilinmeyen alanları işaretliyor. Şartnamede uzantıyı yasaklayan bir hüküm olmadığı için konu yoruma açıktı, ama daha temiz ve standart bir yol vardı. ADR-0061 ile tohumu ayrı bir belge yapılandırmasına taşıdık ve artık ikinci bir standart belge isteğiyle alınıyor. Tohumu koruyan gizlilik kuralları değişmedi.
Doğrulayıcı
- İstekteki
purpose. İmzalı istek nesnesi, OpenID4VP 1.0'ın (§5.1) tanımlamadığı birpurposeparametresi taşıyordu (CheckForUnexpectedParametersInVpAuthorizationRequest). Bu parametreyi kaldırdık. Cüzdanın kullanıcıya gösterdiği amaç zatenverifier_infoiçindeki kayıt sertifikasından (ETSI TS 119 475) ve güven listesindeki kayıtlı kullanımdan geliyordu. direct_postyanıtı. Sunum kabul edildikten sonra yanıt ucu,redirect_uriile birlikteshow_urlda döndürüyordu (ValidateDirectPostResponse, OpenID4VP §8.2). Artık yalnızredirect_uridönüyor ve yüz yüze kontrol ekranını açan anahtar bu adresin içinde taşınıyor.- Doğrulama sırasında çekilen durum listeleri. Tamga doğrulayıcıları durum listelerini önceden indirir ve kontrolü önbellekten yapar. Böylece belgeyi veren kurum, belgenin ne zaman kontrol edildiğini öğrenemez. Test aracı ise her testte yeni bir liste adresi veriyor ve doğrulayıcının bu listeyi çekip çekmediğini denetliyor. Bunun için, eksik bir listeyi doğrulama sırasında çekmeye yarayan bir seçenek ekledik. Seçenek varsayılan olarak kapalı ve ancak açıkça etkinleştirilirse çalışıyor. Liste de yalnız kurumun bildirdiği durum sunucusundan, aynı ağ denetimlerinden geçerek çekiliyor. Bu seçenek yalnız sandbox'ın öz-test politikasında açık. Aynı çalışmayla gerçek bir eksiği de kapattık: dış bir kurumun durum listesinin adresi artık ilk görüldüğü anda öğreniliyor ve bu değişiklik gerçek AB PID'lerinin doğrulanmasında da işe yarıyor.
- İstek nesnesinin alanları. İstek nesnesinin gövdesi artık başlığa ek olarak
audveiatalanlarını da taşıyor. - HAIP kapsamındaki yeni bir denetim, yanıt şifreleme anahtarını yeniden kullanan doğrulayıcıyı başarısız sayıyor. Bizim doğrulayıcımız her istek için zaten yeni bir anahtar üretiyor, yine de bunun için regresyon testi ekledik.
Kodda olmayanlar: ayarlar ve test adımları
Bazı bulgular bizden kaynaklanıyordu ama sorun kodda değildi. Testler sürerken yapılan bir dağıtımda yeniden başlayan bir servis, üç modüle 502 hatası döndürdü; bu yüzden test sırasında dağıtım yapılmamalı. İkinci istemcinin dönüş adresinde bir sorgu dizesi (query string) vardı ve sandbox'ın izin listesi bu adresi tanımıyordu. Bazı modüller de test eden kişiden belirli bir adımı tam olarak uygulamasını istiyor. Ret testinde Onayla yerine Vazgeç'e basmak, request_uri yeniden kullanım testinde ilk açılışta hiçbir şey yapmamak, on dakikalık sürenin dolmasını beklemek, doğru ekran görüntüsünü yüklemek ve aynı test takma adıyla (alias) aynı anda yalnız tek test çalıştırmak bunlardan bazıları. Her biri bize bir kez tekrar çalıştırmaya mal oldu.
Neyi düzelteceğimize nasıl karar verdik?
Baştan sona tek bir ilkeye uyduk. Kodu yalnız bir şartname maddesi gerektirdiğinde değiştirdik, test aracının kendine özgü beklentileri için değiştirmedik ve bilerek bıraktığımız her farkı yazıya geçirdik. Koda dokunmadan önce de her bulguyu aşağıdaki sınıflardan birine koyduk.
| Sınıf | Anlamı | Ne yaptık |
|---|---|---|
| hata | şartnamedeki ya da profildeki bir MUST kuralı başka bir davranış istiyor | düzelttik ve regresyon testi ekledik |
| önerilen | bir SHOULD kuralı ya da gizlilik veya güvenlik önerisi | yazılı bir gerekçemiz yoksa düzelttik |
| ayar | aracın ayarı, test ortamı ya da test edenin adımı | ayarı ya da yöntemi düzelttik |
| beklenen | desteklemediğimiz bir seçenek ya da belgelenmiş bir uzantı | olduğu gibi bıraktık ve kayda geçirdik |
| karar | şartname izin veriyor ama araç başka bir yol bekliyor | proje yönetimi bir ADR ile karar verdi |
| araç sınırı | araç, hiçbir şartnamenin istemediği bir şeyi denetliyor | doğru kodu koruduk, sorunu aracı geliştiren ekibe bildirdik |

Dört bulgu daha önce kapatılmış kararlara dokunuyordu. Bu yüzden önce ADR sürecinden geçtiler (0059–0062) ve her biri, kod değişmeden önce proje yönetiminin onayını aldı. Bir uzantıyı (credential_reuse_policy) bilerek koruduk. Bir başkasını ise temiz bir standart biçim bulunduğu için o biçime taşıdık. Temiz bir sonuç almak için AB'nin tanımladığı bir alanı silebilirdik, ama o zaman elimizde testi geçen ve standarda daha az uyan bir servis kalırdı.
Öz-test neyi göstermez?
- Sertifika değildir. OpenID sertifikası, Vakıfla birlikte yürütülen ayrı bir süreçtir ve bizim için de ayrıca verilecek bir karardır.
- Planları yayımlamadık. Araçta bir planı yayımlamak, sonuçlarını herkese açık hâle getirir. Planın ayarlarında ise araca verdiğimiz test özel anahtarları (kanıt imzacısı ve sahte PID'in imza anahtarı) bulunuyor. Bu yüzden dışa aktarılan logları ve ekran görüntülerini yalnız kendimizde tutuyoruz.
- Kapsamı sandbox, iki servis ve her servisin tek bir seçeneğiyle sınırlı. Cüzdan planları cihaz için ayrı bir derleme gerektirdiğinden çalıştırılmadı. Doğrulayıcının mdoc seçeneği de sınanmadı. Bir kurumun issuer'ı bu planla test edilmedi.
- Yalnız protokolü sınar. Araç, iletilerin doğru biçimde kurulduğunu ve gereken denetimlerin yapıldığını sınar. Bir kurumun diploma vermeye yetkili olup olmadığını güven listesi belirler, hukuki tanınma ise hukukun konusudur.
Kitte ne var?
Kit, bir uyum testinin ilk tam turunda öğrenilenleri, herhangi bir OpenID4VCI issuer'ı ya da OpenID4VP verifier'ı için genel bir dille anlatıyor. Kitte hiçbir ürün ya da sunucu adı geçmiyor ve örneklerde example.com kullanılıyor.
| Parça | Ne işe yarar |
|---|---|
| İş akışı | plan ve seçeneklerin belirlenmesi, ayar, çalıştırma sırası, tarayıcı adımları ve inceleme için ekran görüntüleri, loglar, bulguların sınıflandırılması, düzeltme ve tekrar çalıştırma |
| Issuer planı başvuru notları | her OpenID4VCI modülünün neyi denetlediği, ilgili şartname maddesi, tipik hata ve düzeltmesi |
| FAPI 2.0 başvuru notları | issuer planının içinde çalışan 40 FAPI 2.0 Security Profile modülü |
| Verifier planı başvuru notları | her modül ve 400 ile 200 yanıtlarının "geçti" ve "inceleme" sonuçlarına nasıl karşılık geldiği |
| Sık hatalar | belirti → denetim → neden → düzeltme sırasıyla, her bulgunun sınıfıyla birlikte |
| Ayar şablonları | iki plan için anahtarları çıkarılmış suite JSON dosyaları, alan alan açıklamalı |
| Test PKI'sı | test kök sertifikası, kanıt imzacısı ve sahte PID anahtarları için openssl tarifi |
| Ön kontrol listesi | ilk çalıştırmadan önce kodda bakılması gerekenler |
| Log özetleyici | her modülün sonucunu ve bütün başarısız, uyarı ve inceleme satırlarını, anahtar ve hesap bilgisi olmadan çıkaran betik |
Kit, bir yapay zekâ kodlama asistanına eklenti olarak kurulacak biçimde paketlendi; kurulum komutları README dosyasında. Kitin içindeki her şey düz Markdown dosyalarından ve yalnız Python'un standart kütüphanesini kullanan bir betikten oluştuğu için asistan olmadan da kullanılabilir:
git clone https://github.com/tamga-network/oidf-conformance-kit
cd oidf-conformance-kit
# planınızın loglarını araçtan dışa aktarın, sonra:
python scripts/oidf-log-summary.py ./logs --latest
python scripts/oidf-log-summary.py ./logs --latest --format markdown --redact -o summary.mdNasıl katkı verebilirsiniz?
Test aracı hızla değişiyor. Yeni modüller ekleniyor, bazı modüllerin adı değişiyor, bazıları da yeni bir şeyi denetlemeye başlıyor. Kitteki modül adlarını aracın 26 Ekim 2026 tarihli ana dalıyla karşılaştırdık, ama bu bilgiler zamanla eskiyecek. En çok işe yarayacak katkılar şunlar:
- eklenen ya da değişen bir modül veya denetim, kontrol ettiğiniz araç commit'iyle birlikte;
- karşılaştığınız ve düzelttiğiniz bir hata (denetimin adı, nedeni, düzeltmesi ve bunu gerektiren şartname maddesiyle);
- bir araç sınırı (hiçbir şartnamenin bu davranışı neden istemediğinin açıklaması ve aracın sorun kaydına bağlantıyla).
Kite eklenen her düzeltme bir şartnameye dayanmak zorunda. Tek dayanağı test aracı olan bir bulgu, kite araç sınırı olarak girer. Cüzdan planları henüz kitin kapsamında değil ve en büyük eksik de bu. Sorun kayıtlarını ve pull request'leri github.com/tamga-network/oidf-conformance-kit adresinde bekliyoruz.
Sık sorulan sorular
Tamga OpenID sertifikalı mı?
Hayır. Vakfın test aracını sandbox ortamında kendimiz çalıştırdık. Sertifika ayrı bir süreçtir ve bunun için başvuru yapılmadı.
Bazı modüller neden "geçti" yerine "inceleme" ile bitiyor?
Çünkü araç, kişiye gösterilen bir sayfayı göremez. Doğrulayıcımız sonucu kendi sayfasında gösterdiğinde ya da sunucumuz bir hata sayfası açtığında araç ekran görüntüsü ister ve sonucu bir insan onaylar. Bu modüller olağan olarak böyle biter.
Kodu yalnız aracı memnun etmek için mi değiştirdiniz?
Hayır. Her kod değişikliği bir şartname ya da profil maddesine dayanıyor. Aracın hiçbir şartnamede yer almayan bir şey beklediği durumlarda kodumuzu değiştirmedik ve farkı kayda geçirdik.
Kiti Tamga'yla ilgisi olmayan bir issuer ya da verifier için kullanabilir miyim?
Evet. Başvuru notları geneldir ve log özetleyici bu iki planın dışa aktarılan bütün loglarında çalışır.
Kaynaklar
- OpenID for Verifiable Credential Issuance 1.0
- OpenID for Verifiable Presentations 1.0
- OpenID4VC High Assurance Interoperability Profile 1.0
- FAPI 2.0 Security Profile
- OpenID Foundation conformance suite ve sertifika
- OAuth 2.0 Attestation-Based Client Authentication
- RFC 9449 (DPoP), RFC 9126 (PAR), RFC 6749 (OAuth 2.0), RFC 9700 (OAuth güvenlik BCP), RFC 9901 (SD-JWT)
- ADR-0059, ADR-0060, ADR-0061, ADR-0062
- Tamga OpenID4VP profili ve OpenID4VCI profili
- oidf-conformance-kit (Apache-2.0)
İlgili
- Yazı · StandartlarOpenID4VCI ayrıntılı: teklif, DPoP, kanıt, 10'lu paketTamga'da OpenID4VCI 1.0 ile belge vermeyi anlatıyoruz; teklif ve tx_code, PAR ve PKCE, DPoP, nonce ucu, sahiplik kanıtları, cüzdan kanıtı ve 10 kopyalık paket.
- Yazı · StandartlarOpenID4VP ve DCQL ayrıntılı: istekten sonucaDoğrulayıcının OpenID4VP 1.0 ile belgeyi nasıl istediğini ve denetlediğini anlatıyoruz; x509_hash ile imzalı istek, DCQL, şifreli direct_post.jwt ve A–E doğrulama hattı.
- Yazı · StandartlarHAIP ve Token Status List: izlenmeden yüksek güvenceHAIP 1.0'ın neyi sabitlediğini ve Tamga'nın onu nasıl uyguladığını, Token Status List'in de belgeyi, kuruma nerede kullanıldığını söylemeden nasıl iptal ettiğini anlatıyoruz.
- Yazı · GizlilikCüzdana nasıl güvenilir? Cüzdan ve anahtar kanıtlarıTamga Network'te bir kurumun belge vereceği cüzdana nasıl güvendiğini anlatıyoruz; cüzdan kanıtı, anahtar kanıtı, donanım kanıtı ve güven listesi.
- Tamga NetworkSDK
Ağın üzerine kurun
Kavramları sıfırdan öğrenin ya da bir kurumun, doğrulayıcının, cüzdanın ya da devletin ağa nasıl katıldığına bakın.