Implementations
Implementation Comparisons
Comparisons between implementations of the WebID Protocol
WebID Serialization Format | OpenID IdP | X.509 Certificate Creation | Supported WebID URI Schemes | Authentication Methods | Read-Write Web (RWW) Capabilities | ACL Controlled | Semantic Pingback | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
RDF/XML | RDFa | N3 | Keygen | IE | Standalone | http:
|
mailto:
|
ldap:
|
acct:
|
WebID Implementation | WebID Protocol | WebID Delegated | OpenID RP | Password | WebDAV | SPARQL | HTML Form | ||||
xwiki | N | Y | N | N | Y | N | N | Y | ??? | ??? | ??? | ||||||||||
JavaScript API Demo | Y | Y | N | N | Y (<keygen> not required) |
Y | N | Y | ??? | ??? | ??? | Apache PHP | Y | ||||||||
clerezza | Y | Y | Y | N | Y | Y | N | Y | ??? | ??? | ??? | Clerezza | Y | Y | |||||||
id.myopenlink.net | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Virtuoso | Y | Y | Y | Y | Y | Y | Y | Y | Y |
foaf.me | Y | N | N | N | Y | N | N | Y | ??? | ??? | ??? | libAuthentication | Y | Y | Y | Y | Y | ||||
django-webid-provider | N | Y | N | N | Y | Y | N | Y | ??? | ??? | ??? | Python-WebID | Y | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? |
Drupal WebID module | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? |
elgg / lorea | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? | ??? |
Language/System | RDF/XML | RDFa | N3 | Multi-Certificate Keys | Multiple SAN | Webfinger | Fingerpoint | Delegated WebID | Literals | |
---|---|---|---|---|---|---|---|---|---|---|
CGI::Auth::FOAF_SSL | Perl | Y | Y | note 1 | Y | Y | Y | Y | N | N |
libAuthentication | PHP | Y | Y | Y | Y | N | N | N | Y | Y |
Sommer foaf+ssl | Java | Y | Y | Y | N | N | N | N | Y | Y |
Clerezza | Java & Scala | Y | Y | Y | N | N | N | N | Y | Y |
OpenLink Data Spaces (ODS) | SQL Stored Procedures / C | Y | Y | Y | Y | Y | Y | Y | Y | Y |
mod_authn_webid | Apache 2 module | Y | Y | Y | Y | Y | N | N | N | N |
foaf-ssl ruby | Ruby | |||||||||
django-webid-auth | Python | Y | Y | Y |
Notes:
1. CGI::Auth::FOAF_SSL supports Turtle and N-Triples out of the box, and full Notation 3 if the optional RDF-TriN3 module is used.
Implementation Comparisons, redux
Implementations actually fall into several subcategories... The table above will be split as may be obvious.
WebID Generators/Providers
incorporate relevant content from FOAF+SSL IdP list...
Cert Generating Software
Cert Generating Services (also known as "Identity Providers")
WebID Consumers
incorporate relevant content from FOAF+SSL Clients and Relying Parties lists...
Cert Verifiers (implementations of the Test Suite)
Cert Verifying Software
Cert Verifying Services
WebID-compliant Applications
Client-side (including web browsers and extensions, and other client-side libraries and executables)
Server-side (including web servers and extensions, and other server-side libraries and executables)
WebID-compliant Sites and Services (also known as "Relying Parties")
Tool Description in more detail
Clerezza
Clerezza uses KeygenApp & Clerezza mod
OpenLink Virtuoso
Virtuoso uses keygen HTML tags to instruct browser to make certificate and associated private key. Some Browsers (e.g., Chrome, Safari) implement this call via interactions with local key store. Others (e.g., Firefox and Opera) use it with their browser hosted key store. Runs on Native OS (Windows and MacOS X), Virtuoso authentication module, ODS authentication module & service.
OpenLink X.509 Certificate Generation Wizard
OpenLink X.509 Certificate Generation Wizard is an HTML based application for generating X.509 certificates and associated keys and persisting them to an Identity Provider space on a network e.g. Web. It also exists in Native form for Windows , with variants for iOS5, Mac OS X, and Android under development.
Sommer
So(m)mer libraries are currently on github: keygen & foaf-ssl
People working on implementations
- bblfish
- msporny
- kidehen (MyOpenLink Identity Provider Service, OpenLink Data Spaces and Virtuoso)
- Andrei Sambra
- hellekin (Ruby)
- scor (Drupal)
- jonasp (Erlang)
- bennomadic (Python-WebID, Django-WebID-provider, Django-WebID-Auth)
- thomasfr (Node.js)
- akbarhossain (webid4.me)
- presbrey (WebID authentication module for Apache 2)
TODO
- split implementation comparison table into several categories as outlined above
- add maturity level (whether a given implementation is stable or under heavy development and subject to changes)
- add test coverage for each implementation
- add links to implementation guidance, e.g., examples to demonstrate how a given WebID library might be integrated into an application or service