<docbook><section><title>OAuth</title><para> </para>
<bridgehead class="http://www.w3.org/1999/xhtml:h2"> What is OAuth?</bridgehead>
<para>The OAuth protocol enables websites or applications (<emphasis>Consumers</emphasis>) to access Protected Resources from Web services (<emphasis>Service Providers</emphasis>) via an API, without requiring Users to disclose their Service Provider credentials to those Consumers.
 More generally, OAuth creates a freely-implementable and generic methodology for API-oriented authentication.</para>
<para>For <emphasis>Consumer</emphasis> developers, OAuth is a method to publish and interact with protected data.</para>
<para>For <emphasis>Service Provider</emphasis> developers, OAuth gives users access to their data while protecting their account credentials.</para>
<para>One use case would be allowing a printing service, printer.example.com (the Consumer), to access private photos stored on photos.example.net (the Service Provider), without requiring Users to reveal their photos.example.net credentials to printer.example.com.</para>
<bridgehead class="http://www.w3.org/1999/xhtml:h3"> Why is it important?</bridgehead>
<para>OAuth allows the user to selectively grant access to their private resources housed on one site (called the <emphasis>Service Provider</emphasis>), to another site (called the <emphasis>Consumer</emphasis>).
 In other words, OAuth enables you to grant access to some of your information without sharing all of your identity.</para>
<para>OAuth does not require a specific user interface or interaction pattern, nor does it specify how Service Providers authenticate Users, making the protocol ideally suited for cases where authentication credentials are unavailable to the Consumer, such as with <ulink url="OpenID">OpenID</ulink>.</para>
<para>OAuth aims to unify the experience and implementation of delegated web service authentication with a single, community-driven protocol.
 OAuth builds on existing protocols and best practices that have been independently implemented by various websites.
 An open standard, supported by large and small providers alike, promotes a consistent and trusted experience for both application developers and the users of those applications.</para>
<bridgehead class="http://www.w3.org/1999/xhtml:h3"> How does it work?</bridgehead>
<para>What is publicly known as <emphasis>&quot;OAuth&quot;</emphasis> is really the <emphasis>&quot;OAuth Core 1.0&quot;</emphasis> specification.
 The <emphasis>&quot;Core&quot;</emphasis> designation is used to stress that this is the skeleton upon which other extensions and protocols may be built.
 OAuth Core 1.0 does NOT by itself provide many desired features such as automated discovery of endpoints, language support, support for XML-RPC and SOAP, standard definition of resource access, <ulink url="OpenID">OpenID</ulink> integration, a full range of signing algorithms, or any number of other great ideas posted to the OAuth group.</para>
<para>This was intentional and is viewed by the authors as a benefit.
 As the name implies, Core deals only with the most fundamental aspects of the protocol:</para>
<itemizedlist mark="bullet" spacing="compact"><listitem>Establish a mechanism for exchanging a username and password for a token with defined rights </listitem>
<listitem>Provide tools to protect these tokens</listitem>
</itemizedlist><para>More details can be found <ulink url="http://oauth.net/documentation/getting-started">here</ulink>.</para>
<para> </para>
<bridgehead class="http://www.w3.org/1999/xhtml:h2"> What are OAuth Access Tokens?</bridgehead>
<para>Credentials bearing tokens enable a user to provide their credentials in tokenized form in cases where HTTP redirection to a browser plus human interaction is unavailable or unsuitable.
 For example, intermediary intelligent agents, mobile phones, or set-top devices.</para>
<bridgehead class="http://www.w3.org/1999/xhtml:h3"> How does it work?</bridgehead>
<bridgehead class="http://www.w3.org/1999/xhtml:h4"> Request Authentication</bridgehead>
 To request an Access Token in this model, the Consumer makes an HTTP request to the Service Provider&#39;s Access Token URL.
 The authentication request contains [nine] parameters contained in the HTTP Authorization header or as URL parameters.
 Parameter names and values must be &quot;percent-encoded&quot; to handle characters in different character sets.
 The request should be performed using TLS, and should use HTTP POST.<bridgehead class="http://www.w3.org/1999/xhtml:h4"> Receive Authentication</bridgehead>
 Before granting an access token, the Service Provider must ensure that the request signature has been successfully verified as per OAuth, that a request with the supplied timestamp and nonce has never been received before, and that the supplied username and password match a User&#39;s credentials.
 If successful, the Service Provider generates an Access Token and Token Secret using a 200 Ok response and returns them in the HTTP response body.<bridgehead class="http://www.w3.org/1999/xhtml:h4"> Access Protected Resources</bridgehead>
 After successfully receiving the Access Token and Token Secret, the Consumer is able to access the Protected Resources on behalf of the User as per section 7 of the OAuth core specification.
 In other words, the Access Token obtained here is no different in capability to the Access Token specified by OAuth.
 Once authenticated using the above process, the Consumer will sign all subsequent requests for the User&#39;s Protected Resources using the returned Token Secret.<para> </para>
<bridgehead class="http://www.w3.org/1999/xhtml:h2"> Additional Information</bridgehead>
<bridgehead class="http://www.w3.org/1999/xhtml:h3"> General OAuth Information</bridgehead>
<itemizedlist mark="bullet" spacing="compact"><listitem><ulink url="http://www.hueniverse.com/hueniverse/2007/09/explaining-oaut.html">Explaining OAuth</ulink> </listitem>
<listitem><ulink url="http://www.hueniverse.com/hueniverse/2007/10/beginners-gui-1.html">Visual OAuth Usage Example</ulink> </listitem>
<listitem><ulink url="http://www.hueniverse.com/hueniverse/2008/10/beginners-guide.html">OAuth Beginners Guide - Part 3</ulink> </listitem>
<listitem><ulink url="http://oauth.net/core/1.0">OAuth specification</ulink> </listitem>
<listitem><ulink url="http://oauth.net/documentation/getting-started">Getting Started with OAuth</ulink> </listitem>
<listitem><ulink url="http://xml.coverpages.org/draft-dehora-farrell-oauth-accesstoken-creds-00.txt">OAuth Access Tokens Using Credentials specification</ulink> </listitem>
<listitem><ulink url="http://xml.coverpages.org/draft-hammer-oauth-00.txt">OAuth: HTTP Authorization Delegation Protocol specification</ulink> </listitem>
<listitem><ulink url="http://groups.google.com/group/oauth">Google OAuth Group</ulink> </listitem>
<listitem><ulink url="http://step2.googlecode.com/svn/spec/openid_oauth_extension/drafts/0/openid_oauth_extension.html">OAuth &amp; OpenID Combined</ulink> - Protocol Extension</listitem>
</itemizedlist><bridgehead class="http://www.w3.org/1999/xhtml:h3"> Virtuoso- and <ulink url="OpenLink">OpenLink</ulink>-specific OAuth Information</bridgehead>
<itemizedlist mark="bullet" spacing="compact"><listitem><ulink url="VirtuosoOAuthServer">Virtuoso OAuth server</ulink> </listitem>
<listitem><ulink url="VirtAuthServerUI">Virtuoso Authentication Server UI</ulink>.
</listitem>
<listitem><ulink url="http://ods.openlinksw.com/dataspace/dav/wiki/ODS/VirtOAuthControllers">Using OAuth with ODS</ulink> </listitem>
<listitem><ulink url="http://ods.openlinksw.com/dataspace/dav/wiki/ODS/VirtuosoOdsUbiquity">ODS Ubiquity Commands</ulink> </listitem>
<listitem><ulink url="VirtOAuth">Virtuoso OAuth Implementation</ulink> </listitem>
<listitem><ulink url="http://ods.openlinksw.com/dataspace/dav/wiki/ODS/VirtuosoOdsControllers">ODS Controllers</ulink> </listitem>
<listitem><ulink url="http://ods.openlinksw.com/dataspace/dav/wiki/ODS/VirtODSOAuthQA">Testing Virtuoso OAuth with 3rd Party OAuth Clients</ulink> </listitem>
<listitem><ulink url="http://ods.openlinksw.com/dataspace/dav/wiki/ODS/VirtuosoOdsUbiquityTutorialsOAuth">OAuth Ubiquity Tutorial</ulink> </listitem>
<listitem><ulink url="http://ods.openlinksw.com/dataspace/dav/wiki/ODS/VirtOAuthTestTool">Virtuoso OAuth Test Tool for ODS Controllers</ulink> </listitem>
<listitem><ulink url="VirtOAuthSPARQL">Virtuoso SPARQL OAuth Tutorial</ulink> </listitem>
<listitem><ulink url="http://ods.openlinksw.com/dataspace/dav/wiki/ODS/VirtuosoOdsUbiquityTutorials">ODS Ubiquity Tutorials</ulink> </listitem>
<listitem><ulink url="http://ods.openlinksw.com/dataspace/dav/wiki/ODS/VirtOAuthExamples">OAuth Applications Authentication examples</ulink> </listitem>
<listitem><ulink url="http://oauth.net/core/1.0/">OAuth API</ulink> </listitem>
</itemizedlist></section></docbook>