Schlagwort-Archive: REST

Episode 25 – FoaF+SSL

Nach einer kleinen Abstinenz haben wir diesmal, wie versprochen, wieder ein Thema. Mario Volke (Webholics) hat uns das Thema FoaF+SSL vorgeschlagen, vorbereitet und erklärt uns in der aktuellen Folge wie es funktioniert 🙂

Vielen Dank auch an Henry Story, dem geistigen Schöpfer von FoaF+SSL, der uns im IRC-Chat mit Rat und Tat zur Seite stand.


Länge: 0:55h (47.5 MB), Download MP3

News

Shownotes

(Vielen Dank an Mario, der die Shownotes zusammengestellt hat)

  • dezentralisiertes Authentifizierungsprotokoll
  • One-Click-SignOn (kein Username, kein Passwort)
  • WebID: Ein URI als ID für deine Person (LinkedData)
  • 100% Standardbasiert: REST, RDF, LinkedData, SSL, X509
  • Alle Vorteile von Semantic Web Technologies: strikte Semantik, Erweiterbarkeit (Namespaces), Reasoning (OWL)
  • Web of Trust

Use Cases

  • neben einfachem Login
  • Web site personalization
    • Profil (FOAF) portabel und unter Kontrolle des Users, import mit nur einem Klick (FOAF+SSL Login)
    • Einfaches Kommentieren (keine Eingabe von persönlichen Daten mehr notwendig)
  • Distributed Access Control
    • Zugang nur einer bestimmten foaf:Group gewähren
    • Rule Based Access Control: Komplexe Policies möglich (bsp. nur Freunde von bereits vorhandenen Usern erhalten Zugang, dies macht jeglichen Invitation-Mechanismus obsolet)
    • Komplexität der Policies lediglich durch Aussagekraft von RDF/OWL beschränkt
  • Distributed Social Networks
    • auch hier komplexe Rollen und Zugangsbeschränkungen möglich

Details

  • Was braucht ein User um sich einzuloggen?
    • X509-Zertifikat (normalerweise direkt im Browser installiert)
    • FOAF-File (öffentlich auf einem bel. Server, LinkedData)
  • SSL (RSA)
    • Zertifikate häufig nur, um Server gegenüber Client zu authentifizieren
    • jetzt: Browser besitzt self-signed Zertifikat und authentifiziert sich gegenüber dem Server
    • X509-Zertifikat enthält Link zur WebID (und damit zum FOAF-File) (im Feld „X509v3 Subject Alternative Name“)
    • Der Public-Key des Zertifikats muss mit dem im FOAF-Profil identisch sein
  • Protokoll
    • User klickt auf Login-Button
    • Server eröffnet SSL Handshake und verlangt Zertifikat vom User
    • Server holt sich das FOAF-Profil des Users (überprüft den Public-Key auf Gleichheit)
    • nun sind weitere beliebige Autorisierungsschritte anhand des FOAF-Profils möglich (Web of Trust)
  • Wie erstelle ich mir ein Zertifikat?
    • z.B. HTML5 <keygen>-Tag (Firefox, Opera, Safari, Chrome) (http://test.foafssl.org/cert/)
    • mit ActiveX für IE
    • zur Not Serverseitig, allerdings Security Risk weil der Server dann den Private Key kennt
  • Gibt es bereits Server-Implementierungen?
    • Ja, einige, z.B. für PHP, Python, Java, Apache Modul
  • Browser-Support:
    • Firefox und Fennec
    • Opera
    • Safari, iPhone (mit bugs)
    • Chrome
    • Internet Explorer >= 6

Links