Solid-OIDC Nedir? İnşa Etmediğimiz Oturum Açma Katmanı
Solid-OIDC, sizi hiç tanımamış bir Solid sunucusunun belirli bir tanımlayıcıyı denetlediğinize ikna olma biçimidir.
Çözdüğü problem
Bir pod, onu barındıran şirkete değil bir kişiye aittir. Dolayısıyla sunucunun, hiçbir parolanın tek başına yanıtlamadığı bir soruyu yanıtlaması gerekir: bu istek, bu tanımlayıcıyı denetleyen kişiden mi geliyor, ki buradaki tanımlayıcı bir WebID'dir, yani bir profil belgesini işaret eden bir HTTPS URL'si.
Solid'i sıradan bir oturum açmadan ayıran hamle: sizi tanıyan tarafın sunucu olması gerekmez. Güvendiğiniz herhangi bir kimlik sağlayıcısı kefil olabilir ve pod sunucusu bu kefaleti kabul eder, çünkü onu kontrol edebilir. Hesabınız ve depolamanız kasten ayrılabilirdir.
Anlaşılmaya değer iki özellik
1. Jeton, tuttuğunuz bir anahtara bağlıdır. Bir Solid-OIDC erişim jetonu, onu çalan herkes için çalışan hamiline yazılı bir sır değildir: göndericinin eşleşen özel anahtarı tuttuğuna dair bir kanıtla birlikte sunulur. Kopyalanmış bir jeton tek başına kimseyi kimlik doğrulamaz.
2. Kimlik doğrulama ve depolama ayrı taraflardır. Verinizi taşımadan nereden oturum açtığınızı değiştirebilir ve sizi kimin kimlik doğruladığını değiştirmeden verinizin nerede yaşadığını değiştirebilirsiniz. Tasarım niyetinin tamamı budur ve çoğu "merkeziyetsiz" sistemin sessizce sahip olmadığı kısımdır.
Bizim dağıtımımız gerçekte ne yapıyor
Solid topluluğunun referans uygulaması olan Community Solid Server'ı çalıştırır. Sunucu bunu kendisi söylüyor:
$ curl -sI https://pod.solidus.network/profile/card | grep -i 'powered-by\|www-authenticate'
x-powered-by: Community Solid Server
www-authenticate: Bearer scope="openid webid"
O sunucuyu biz yazmadık ve bu protokolü biz tasarlamadık. WebID, erişim denetimi modeli ve oturum açma akışı Solid'in işidir. Bunu önce söylemek alçakgönüllülük değil, doğru atıftır ve buradaki, bizimle Solid arasındaki bir farkı tarif eden her sayfa bunu farktan önce söyler.
Kendi malzememize bir düzeltme: bir iç not bunu auth.solidus.network üzerinden giden oturum
açma yolu diye tarif ediyor. Dağıtılmış sunucunun hesap API'si kendi parola girişini, kaydını ve
sıfırlamasını duyuruyor ve o ana hiç atıf vermiyor. Dürüstçe sınırlandırılmış: o API yalnızca
sunucunun kendi oturum açma yöntemlerini listeler, dolayısıyla bu, üçüncü taraf bir ihraççının
kullanılamaz olduğunu kanıtlamaz, dağıtımın orada bir tane duyurmadığını kanıtlar.
Bir sondalama notu, çünkü bu ana bizim diğerleri gibi davranmıyor
Bu anada var olmayan bir yol 404 değil 401 döndürür. Bilinmeyen yollar, bir şey söylemeden
önce sizden kimlik doğrulamanızı isteyen Solid sunucusuna düşer.
$ curl -s -o /dev/null -w '%{http_code}' https://pod.solidus.network/nope-xyz-not-real
401
Yani buradaki bir 401, bir kaynağın var olduğunun kanıtı değildir ve bu dağıtımı test eden herkes, biz dahil, farklı bir sinyal kullanmak zorundadır. Bunu yayımlıyoruz çünkü farklı bir anada bir kez yanlış yaptık ve sizin tekrarlamamanızı tercih ederiz.
Ayrıştığımız tek yer, bir bahis olarak belirtilmiş
Solid sizi bir WebID ile tanımlar: TLS üzerinden çözümlenen, o alan adını kim denetliyorsa onun desteklediği bir HTTPS URL'si. Basittir, zaten var olan altyapıyı kullanır ve bugün çalışır.
Biz bunun yerine tanımlayıcıları bir zincire demirliyoruz; iptal, bir alan adı sahibi tarafından değil uzlaşmayla uygulanıyor.
Bu bir sonuç değil bir bahistir. Dürüst takas:
- WebID bir alan adına ve bir sertifika otoritesine bağlıdır. Alan adının süresi dolarsa ya da ele geçirilirse tanımlayıcı gider.
- Bizimki bir zincire bağlıdır, ki o zincir bugün dördü de bizim işlettiğimiz dört doğrulayıcıdır. "Bu bozulmadan önce kaç bağımsız tarafın arızalanması gerekir" sorusunda WebID'nin cevabı şu anda bizimkinden iyidir.
Bizimkinin daha iyi olduğunu iddia etmiyoruz. Takasın yapmaya değer olduğunu düşünüyoruz ve bunu beyan etmektense tartışmayı tercih ederiz, daha uzun sürümü.
Bunun çözmediği şey
Solid-OIDC kimlik doğrular. Neyi görmenize izin verildiğine karar vermez (o, erişim denetimi katmanıdır, burada tarif edilmiştir) ve pod'unuzdaki herhangi bir iddianın doğru olup olmadığı hakkında hiçbir şey söylemez.
Ve resmî bir uygunluk geçişi gerçekleşmedi. Uyumlu, henüz uygun değil doğru ifadedir ve uygunluk kendi kendine beyan edilemez: asıl çıta üçüncü taraf birlikte çalışabilirlik kanıtıdır.