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
-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
- z.B. HTML5
- 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
- Hauptseite Wiki: http://esw.w3.org/topic/foaf+ssl
- Mailing-List http://lists.foaf-project.org/mailman/listinfo/foaf-protocols
- Paper: FOAF+SSL: RESTful Authentication for the Social Web - http://dig.csail.mit.edu/2009/Papers/SPOT/foaf-ssl-spot2009.pdf
- Vergleich OpenID vs. FOAF+SSL http://blogs.sun.com/bblfish/entry/what_does_foaf_ssl_give
- Das ganze funktioniert sogar mit dem iPhone: http://blogs.sun.com/bblfish/entry/one_click_global_sign_on
- xfn ontology: http://vocab.sindice.com/xfn#
- vcard ontology: http://www.w3.org/Submission/2010/SUBM-vcard-rdf-20100120/
- foaf+ssl als Alternative zu OAuth: http://blogs.sun.com/bblfish/entry/sketch_of_a_restful_photo
- FOAF & SSL: creating a global decentralised authentication protocol: http://blogs.sun.com/bblfish/entry/foaf_ssl_creating_a_global
- foaf+ssl: adding security to open distributed social networks: http://blogs.sun.com/bblfish/entry/foaf_ssl_adding_security_to