SolidusIdentity

OpenID4VCI ve OpenID4VP: Bir AB Cüzdanının Konuştuğu İki Protokol

Birini bugün üretimde çalıştırıyoruz, farklı bir Solidus ürününde. Diğerini hiçbir yerde gerçekleştirmiyoruz.

Bunun Avrupa cüzdan uyumluluğuna eşit olup olmadığı, ayrı yanıtı olan ayrı bir sorudur, ve şurada. Bu sayfa protokoller hakkında.

İki protokolün ne yaptığı

Onlar teldir, yük değil. Kimlik bilgisi biçimi farklı bir katmandır, ve ikisi düzenli olarak birbirine karıştırılıyor.

  • OpenID4VCI, verme. Bir cüzdanın bir verenden nasıl kimlik bilgisi isteyip aldığı. OAuth'u yeniden kullanıyor: bir yetkilendirme adımı, bir jeton, sonra bir kimlik bilgisi uç noktasına bir çağrı. Veren, makine tarafından okunabilir üstveri yayımlıyor, böylece bir cüzdan, bir insanın belge okumasına gerek kalmadan neyin sunulduğunu keşfedebiliyor.
  • OpenID4VP, sunma. Bir doğrulayıcının bir cüzdandan belirli iddiaları nasıl isteyip doğrulanabilir bir yanıt aldığı. İsteğin nasıl ifade edildiğini, yanıtın nasıl geri geldiğini, ve yeniden oynatılamaması için o isteğe nasıl bağlandığını tanımlıyor.

İkisi de yeni bir taşıma icat etmek yerine OAuth 2 ve OpenID Connect üzerine kurulmuştur, ki mevcut altyapının ve kütüphanelerin ağırlığın çoğunu taşımasının sebebi budur.

Gerçekte ne çalıştırdığımız: bir yadsıma değil, bir kapsam beyanı

İçerik planımız bu sayfaya, Solidus'un ikisini de gerçekleştirmediğini söylemesini söyledi. Bu yanlıştır, ve onu yayımlamak kendi işimizi olduğundan az gösterirdi.

OpenID4VCI gerçekleştirilmiştir ve canlıdır. Üstveriyi kendiniz getirin:

$ curl -s https://verify.solidus.network/.well-known/openid-credential-issuer

Bir kimlik bilgisi uç noktası, bir jeton uç noktası, ve sunulan yapılandırmaları döndürüyor. Aynı yol bu ürünün sunucusunda 404 döndürüyor, ve veren sunucudaki uydurma bir .well-known yolu da 404 döndürüyor, dolayısıyla 200 gerçek bir uç noktadır, bir yakala-hepsini değil.

Bu oturumda çalıştırıldı, ileri sürülmedi: üstveri iki kimlik bilgisi yapılandırmasıyla geri geldi, ve aynı şeyi herhangi bir makineden, hesapsız ve kimlik bilgisiz doğrulayabilirsiniz.

Ve kaynakta, ileri sürülmüş değil ölçülmüş hâliyle: protokol adları bu ürünün arka ucunda sıfır dosyayla eşleşiyor, kontrol olarak aynı ağaçta credential 22 dosyayla eşleşirken, ve veren üründe 59 dosya.

Yani doğru cümle şudur: bu ürün iki protokolü de gerçekleştirmiyor; farklı bir Solidus ürünü verme protokolünü gerçekleştiriyor ve canlı üstveri sunuyor. Bu, bir yokluk değil ürünler arasında bir sınırdır, ve bunu "Solidus ikisini de gerçekleştirmiyor"a düzleştiren bir sayfa, kendi konumumuz hakkında yanlış olurdu.

OpenID4VP: gerçekleştirilmemiş, ve onun yerine ne olduğu

Hiçbir yerde bir sunma protokolü gerçekleştirimi bulamadık. Yokladığımız sunucularda doğrulayıcı üstverisi yok.

Var olan şey kendimize ait bir sunum akışıdır. Bir doğrulayıcının isteği bir bağlantı olarak geliyor, açıklama tarayıcıda kuruluyor, ve doğrulayıcının kendi uç noktasına geri gönderiliyor, geri çağrı isteyenin alan adına bağlanmış hâlde: https artı tam bir sunucu adı eşleşmesi, istek ayrıştırılırken ve gönderme anında yeniden denetleniyor. Yanındaki yoruma güvenmek yerine gerçekleştirimi okuduk.

Bu sağlam bir tasarımdır ve OpenID4VP değildir. Ona benzeyen, kendimize özgü bir akıştır. Belirtime karşı yazılmış bir cüzdan onu konuşmayacak, ve ona OID4VP uyumlu demek yanlış olurdu.

Bütünleştirmeden önce bilmeye değer iki ayrıntı

1. Canlı üstverimiz standart olmayan bir biçim duyuruyor. İki kimlik bilgisi yapılandırmasından biri vc+sd-jwt, diğeri solidus-bbs-v2, bizimki. Solidus'a karşı yazılmamış hiçbir cüzdan ikincisiyle ne yapacağını bilmeyecek. Mesele birlikte çalışabilirlikse standart olanı kullanın.

2. proof_types_supported, proofPurpose değildir. Birincisi, OpenID4VCI'nin cüzdanın bir anahtar tuttuğuna dair kanıtıdır; ikincisi tamamen farklı bir belirtim ailesine aittir. Benzer sözcükler, ilgisiz düzenekler, ve tam olarak bu karışıklık sınıfı hakkında bir sayfamız var.

Okumaya devam edin

OpenID4VCI ve OpenID4VP: Bir AB Cüzdanının Konuştuğu İki Protokol · Solidus — Solidus Identity