Bir pod kaynağına izin verin ve dayatıldığını izleyin

Buradaki erişim denetimi, koruduğu şeyin yanına yazdığınız bir belgedir ve üç istekte yürürlüğe girdiğini izleyebilirsiniz. Model Solid'in ve dayatma onların sunucusunun; wac-acl bizim tarafımızda, onu yapan bir yazılım çalıştırdığımız anlamında shipped durumdadır.

Döküm bir dizüstü bilgisayarda çalışan bir pod'dandır, iki komut, dağıtılmış sunucumuzdan değil, ki o kimliği doğrulanmış bir oturum gerektiriyor.

Önce: taze bir pod her şeye izin veriyor

$ curl -X PUT http://localhost:3000/hello.ttl -H 'Content-Type: text/turtle' \
    --data-raw '<#it> <http://schema.org/name> "hello" .'
201 Created

$ curl -sI http://localhost:3000/hello.ttl | grep -i wac-allow
WAC-Allow: user="append control read write", public="append control read write"

Dört kipin hepsi, herkese, denetim dahil. Dört kipin ne olduğu.

Kural

Bir erişim denetimi belgesi, öngörülebilir bir URL'deki sıradan veridir: kaynağın URL'si artı bir sonek, kaynağın kendi Link başlığında ilan edilmiş hâlde, böylece bir istemcinin asla tahmin etmesi gerekmiyor.

$ curl -X PUT http://localhost:3000/hello.ttl.acl -H 'Content-Type: text/turtle' --data-raw '
@prefix acl:  <http://www.w3.org/ns/auth/acl#>.
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
<#public> a acl:Authorization;
  acl:agentClass foaf:Agent;
  acl:accessTo   <./hello.ttl>;
  acl:mode       acl:Read, acl:Control.
'
201 Created

Türkçesi: kim olursa olsun herkes (foaf:Agent herkesin sınıfıdır) bu tek kaynağı okuyabilir ve izinlerini değiştirebilir, ve belirtilmediği için onu yazamaz.

WAC varsayılan olarak reddeder. Hiçbir şeyi yasaklamıyorsunuz; neye izin verildiğini belirtiyorsunuz ve belirtmediğiniz her şey geri çevriliyor.

Sonra: aynı yazma geri çevriliyor

$ curl -o /dev/null -w '%{http_code}' http://localhost:3000/hello.ttl
200

$ curl -X PUT http://localhost:3000/hello.ttl -H 'Content-Type: text/turtle' \
    --data-raw '<#it> <http://schema.org/name> "overwritten" .'
401

$ curl -sI http://localhost:3000/hello.ttl | grep -i wac-allow
WAC-Allow: user="control read", public="control read"

Okuma hâlâ çalışıyor. Yazma çalışmıyor. Ve başlık dört kipten ikiye değişti: sunucu kendi kararını size geri bildiriyor, ki bu, bunu ümitli olmak yerine kontrol edilebilir kılan kısımdır.

Kontrol, ki o olmadan yukarıdakilerin hiçbiri bir şey ifade etmiyor

Basitçe yazmaları geri çevirmeye başlamış bir sunucu, tam olarak aynı üç satırı üretirdi. Şöyle:

$ curl -X PUT http://localhost:3000/sibling.ttl -H 'Content-Type: text/turtle' \
    --data-raw '<#x> <http://schema.org/name> "sibling" .'
201 Created

Kendine ait kuralı olmayan bir kardeş hâlâ bir yazmayı kabul ediyor. Ret, sunucuya değil o tek kaynaktaki kurala aittir.

Bunu didikliyoruz çünkü kontrolsüz bir gösterim bir ekran görüntüsüdür ve bu estate, kanıtlanmamış bir aleti bir bulgu gibi okurken kendini çoktan yakaladı.

Neden 401 ve neden 403 değil

İstek hiçbir kimlik bilgisi taşımıyordu, dolayısıyla sunucu size yasaklı olduğunuzu söylemek yerine kimlik doğrulamaya davet ediyor. Yine de yazma erişimi olmayan bir oturumla diğer kodu beklersiniz.

Bu akıl yürütmeyi dağıtılmış sunucumuza taşımayın. Orada, bilinmeyen bir yol da 401 döndürüyor, dolayısıyla oradaki bir 401, "oturum açmanız gerekiyor", "izniniz yok" ve "o şey yok" arasında ayrım yapmıyor. Kendi sözlüğümüz, erişim denetiminin çalıştığının kanıtı olarak kimlik doğrulamasız bir ret testi öneriyor; bizim sunucumuzda testin o yarısı hiçbir şey kanıtlamıyor. Yalnızca kimliği doğrulanmış yarısı kanıtlıyor.

Bunun bizim hakkımızda gösterdiği şey, ki göründüğünden azdır

Az önce Solid'in erişim denetimi modelinin Solid'in sunucusunda çalıştığını izlediniz. Bizim katkımız onu çalıştırmamız ve bir istemci kitaplığı üzerinden çağırmamızdır, ve kendi arayüzümüz dört kipin ikisini sunuyor, ki bu sunucunun değil bizim sınırlamamızdır.

Bir izin aynı zamanda bir rıza kaydı da değildir, tamamen farklı bir soru.

Okumaya devam edin

Bir pod kaynağına izin verin ve dayatıldığını izleyin · Solidus