---+ WebID Protocol Support in OpenLink Data Spaces
%TOC%
---++What is the WebID Protocol?
The WebID Protocol is an authentication and authorization protocol that links a ''[[../VOS/GetAPersonalURIIn5MinutesOrLess][Web ID]]'' or
"[[../VOS/GetAPersonalURIIn5MinutesOrLess][Personal URI]]"
to a public key to create a global, decentralized, distributed, and secure authentication system that
functions with existing browsers.
The WebID Protocol uses PKI standards — usually thought of as hierarchical trust management tools —
[[http://blogs.sun.com/bblfish/entry/foaf_ssl_pki_and_the][in a decentralized web-of-trust way]].
The web of trust is built using semantic web vocabularies (particularly
[[http://www.foaf-project.org/][FOAF]]) published in RESTful manner to form [[Linked Data]].
Based on well known existing standards, the WebID Protocol is currently in development, and is being discussed
on the [[http://lists.foaf-project.org/mailman/listinfo/foaf-protocols][FOAF protocols mailing list]].
For the most recent description of the protocol, read the one-page
[[http://blogs.sun.com/bblfish/entry/foaf_ssl_adding_security_to][WebID Protocol: Adding Security to Open Distributed Social Networks]].
For a more detailed explanation of how the authentication works, see
[[http://blogs.sun.com/bblfish/entry/more_on_authorization_in_foaf][WebID Protocol: Creating a Web of Trust without Key Signing Parties]].
---++Why use the WebID Protocol?
Automatic discovery of interpersonal trust relationships enables automatic application of
appropriate permissions.
In other words, data owners can set fuzzy permissions like "only let my friends see this"
or "only let my family edit this." Applications can discover the relationships between
the data owner and the data requester/user, and permit (or disallow) any attempted actions,
without needing the data owner to explicitly set permissions for each potential user.
One example might be a parent setting permissions on a photo gallery, to permit viewing only
by "immediate family". The parent need not list each and every such relative specifically
for this application -- and need not add new permissions for a new family member (whether
by marriage, birth, or otherwise), though they *do* need to be added to the owner's FOAF.
When a new user comes and asks to see the pictures, the gallery application would check the
relationships declared by each person (the owner and the visitor), and if they matched up
(in other words, the visitor could not get in simply by *claiming* a family relationship;
the relationship must be confirmed by the owner's FOAF data), the pictures would be shown.
---++How can I use the WebID Protocol?
---+++ Prerequisites
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtGenerateX509Cert][Generate x.509 certificate]].
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtSetupSSLFileSystem][Set up Virtuoso HTTPS]].
---+++ Configure your ODS Account to use the WebID Protocol
1 Log in to your ODS account, and edit your profile.
1 Click to the Security Tab, and scroll to the bottom, where you will find the X.509 certificate entry area.
1 Copy & paste the PEM format of the certificate (i.e., the content of mykey.pem
, from earlier).
1 Press "Save Certificate" button, and you are set.
---+++ Test the setup
To test, we recommend [[http://id.myopenlink.net/ods/webid_demo.html][Virtuoso WebID Verification Proxy Service]]:
1 Go to [[http://id.myopenlink.net/ods/webid_demo.html][Virtuoso WebID Verification Proxy Service]] Endpoint:
* Note: Optionally you can hatch the "Check Certificate Expiration" check-box.
%BR%%BR%%BR%%BR%
1 Click the "Check" button.
1 Should be challenged to choose a certificate to present as identification. Select the certificate generated from above and click "Ok":
%BR%%BR%%BR%%BR%
1 Should be presented the extracted WebID value, the subject, MD5, SHA1 and Timestamp in ISO 8601 format:
%BR%%BR%%BR%%BR%
---+++ WebID Protocol ACLs
You can set WebID Protocol ACLs (Access Control Lists) through the [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtAuthServerUI][Virtuoso Authentication Server UI]], for which there is [[http://virtuoso.openlinksw.com/wiki/main/Main/VirtSPARQLSecurityWebID][a tutorial]].
---+++Setup ACL for ODS Applications
* [[ODSBriefcaseWebID][ODS Briefcase WebID based ACL Guide]]
* [[ODSFeedManagerWebIDACL][ODS Feed Manager WebID based ACL Guide]]
* [[ODSCalendarWebIDACL][ODS Calendar WebID based ACL Guide]]
* [[ODSBookmarksWebIDACL][ODS Bookmark Manager WebID based ACL Guide]]
* [[ODSAddressBookWebIDACL][ODS Addressbook WebID based ACL Guide]]
---++Related
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtSPARQLEndpointProtection][Safeguarding your Virtuoso-hosted SPARQL Endpoint]]
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtTipsAndTricksGuideSPARQLEndpointProtection][SPARQL Endpoint Protection Methods Collection]]
* [[http://docs.openlinksw.com/virtuoso/][Virtuoso documentation]]
* [[http://docs.openlinksw.com/virtuoso/rdfsparql.html#rdfsupportedprotocolendpoint][SPARQL Service Endpoint]]
* [[http://docs.openlinksw.com/virtuoso/rdfsparql.html#rdfsupportedprotocolendpointuri][Service Endpoint Security]]
* [[http://docs.openlinksw.com/virtuoso/rdfsparql.html#sparqwebservicetbl][Managing a SPARQL Web Service Endpoint]]
* [[http://docs.openlinksw.com/virtuoso/rdfsparql.html][SPARQL]]
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtTipsAndTricksGuide][Virtuoso Tips and Tricks Collection]]
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtSPARQLDET][SPARQL Endpoint DET Configuration Guide]]
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtSPARQLSecurityWebID][WebID Protocol & SPARQL Endpoint ACLs Tutorial]]
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtOAuthSPARQL][SPARQL OAuth Tutorial]]
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtTipsAndTricksGuideSPARQLEndpoints][Securing SPARQL endpoints]]
* [[OdsSPARQLAuth][SPARUL over SPARQL using the http://cname:port/sparql-auth endpoint]]
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtAuthServerUI][Virtuoso Authentication Server UI]]
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtSPARQLSSL][Manage a SPARQL-WebID based Endpoint]]
* [[VirtODSSecurityWebID][WebID Protocol Support in OpenLink Data Spaces]].
* Manage ODS Datadspaces Objects WebID Access Control Lists (ACLs):
* [[ODSBriefcaseWebID][ODS Briefcase WebID based ACL Guide]]
* [[ODSBriefcaseWebIDPerson][Person Entity WebID based ACL Guide]]
* [[ODSBriefcaseWebIDGroup][Group Entity WebID based ACL Guide]]
* [[ODSBriefcaseWebIDPublic][Public WebID based ACL Guide]]
* [[ODSFeedManagerWebIDACL][ODS Feed Manager WebID based ACL Guide]]
* [[ODSFeedManagerWebIDACLPerson][Person Entity Specific ACL]]
* [[ODSFeedManagerWebIDACLGroup][Group Entity Specific ACL]]
* [[ODSFeedManagerWebIDACLPublic][Public Specific ACL for anyone with a WebID]]
* [[ODSCalendarWebIDACL][ODS Calendar WebID based ACL Guide]]
* [[ODSCalendarWebIDACLPerson][Person Entity Specific ACL]]
* [[ODSCalendarWebIDACLGroup][Group Entity Specific ACL]]
* [[ODSCalendarWebIDACLPublic][Public Specific ACL for anyone with a WebID]]
* [[ODSBookmarksWebIDACL][ODS Bookmark Manager WebID based ACL Guide]]
* [[ODSBookmarksWebIDACLPerson][Person Entity Specific ACL]]
* [[ODSBookmarksWebIDACLGroup][Group Entity Specific ACL]]
* [[ODSBookmarksWebIDACLPublic][Public Specific ACL for anyone with a WebID]]
* [[ODSAddressBookWebIDACL][ODS Addressbook WebID based ACL Guide]]
* [[ODSAddressBookWebIDACLPerson][Person Entity Specific ACL]]
* [[ODSAddressBookWebIDACLGroup][Group Entity Specific ACL]]
* [[ODSAddressBookWebIDACLPublic][Public Specific ACL for anyone with a WebID]]
* [[ODSPkiSetup][Guide for Set up a X.509 certificate issuer and HTTPS listener and generate ODS user certificates.]]
* [[ODSSetupSSL][Configure Virtuoso+ODS instance as an X.509 Certificate Authority and HTTPS listener]]
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtSetupSSL][Configure Virtuoso instance as an X.509 Certificate Authority and HTTPS listener]]
* [[VirtODSPubSubHub][Setting up PubSubHub in ODS]]
* [[VirtPubSubHub][PubSubHubBub Demo Client Example]]
* [[VirtFeedPubSubHub][Feed subscription via PubSubHub protocol Example ]]
* [[VirtPubSubHubACL][Setting Up PubSubHub to use WebID Protocol or IP based control lists]]
* [[OdsKeyImport][CA Keys Import using Conductor]]
* [[ODSGenerateX509Certificate][Generate an X.509 Certificate hosted WebID Guide]]
* [[ODSGenerateWebIDX509CertOSKeystore][Generate an X.509 Certificate (with a WebID watermark) to be managed by host operating system keystore]]
* [[ODSGenerateWebIDX509CertBrsKeystore][Generate an X.509 Certificate (with a WebID watermark) to be managed by a browser-based keystore]]
* [[ODSWebIDIdP][Using Virtuoso's WebID Verification Proxy Service with a WebID-bearing X.509 certificate]]
* [[ODSWebIDIdpProxy][Using Virtuoso's WebID Identity Provider (IdP) Proxy Service with an X.509 certificate]]
* [[ODSBriefcaseWebIDShareFile][ODS Briefcase WebID Protocol Share File Guide]]
* [[http://esw.w3.org/topic/foaf+ssl][WebID Protocol Specification]]
* [[https://foaf.me/simpleLogin.php][Test WebID Protocol Certificate page]]
* [[http://test.foafssl.org/cert/][WebID Protocol Certificate Generation page]]