This HTML5 document contains 51 embedded RDF statements represented using HTML+Microdata notation.

The embedded RDF content will be recognized by any processor of HTML5 Microdata.

PrefixNamespace IRI
n18http://oauth.net/documentation/
dctermshttp://purl.org/dc/terms/
n17http://oauth.net/core/1.0/
atomhttp://atomowl.org/ontologies/atomrdf#
foafhttp://xmlns.com/foaf/0.1/
n12http://vos.openlinksw.com/dataspace/services/wiki/
oplhttp://www.openlinksw.com/schema/attribution#
n2http://vos.openlinksw.com/dataspace/owiki/wiki/VOS/
n4http://ods.openlinksw.com/dataspace/dav/wiki/ODS/
dchttp://purl.org/dc/elements/1.1/
n8http://vos.openlinksw.com/dataspace/dav#
rdfshttp://www.w3.org/2000/01/rdf-schema#
n22http://xml.coverpages.org/draft-dehora-farrell-oauth-accesstoken-creds-00.
n13http://rdfs.org/sioc/services#
siocthttp://rdfs.org/sioc/types#
n10http://vos.openlinksw.com/dataspace/person/dav#
n14http://www.hueniverse.com/hueniverse/2007/09/explaining-oaut.
n23http://xml.coverpages.org/draft-hammer-oauth-00.
n16http://vos.openlinksw.com/dataspace/owiki/wiki/
n19http://groups.google.com/group/
n15http://www.hueniverse.com/hueniverse/2007/10/beginners-gui-1.
n24http://www.hueniverse.com/hueniverse/2008/10/beginners-guide.
rdfhttp://www.w3.org/1999/02/22-rdf-syntax-ns#
n7http://vos.openlinksw.com/dataspace/owiki#
n25http://oauth.net/core/1.
n6http://vos.openlinksw.com/dataspace/owiki/wiki/VOS/VirtOAuth/sioc.
xsdhhttp://www.w3.org/2001/XMLSchema#
n21http://vos.openlinksw.com/dataspace/person/owiki#
siochttp://rdfs.org/sioc/ns#
Subject Item
n10:this
foaf:made
n2:VirtOAuth
Subject Item
n8:this
sioc:creator_of
n2:VirtOAuth
Subject Item
n12:item
n13:services_of
n2:VirtOAuth
Subject Item
n7:this
sioc:creator_of
n2:VirtOAuth
Subject Item
n16:VOS
sioc:container_of
n2:VirtOAuth
atom:entry
n2:VirtOAuth
atom:contains
n2:VirtOAuth
Subject Item
n2:VirtuosoOdsControllers
sioc:links_to
n2:VirtOAuth
Subject Item
n2:VirtOAuth
rdf:type
atom:Entry sioct:Comment
dcterms:created
2017-06-13T05:47:26.681942
dcterms:modified
2017-06-29T07:38:49.763156
rdfs:label
VirtOAuth
foaf:maker
n21:this n10:this
dc:title
VirtOAuth
opl:isDescribedUsing
n6:rdf
sioc:has_creator
n7:this n8:this
sioc:content
---++ OAuth Implementation in OpenLink Data Spaces OAuth tokens must be generated for each user account, for each ODS application, via ODS -> Settings -> OAuth Keys. This UI provides a list of all applications to which the logged-in user has access, i.e., of which the user is a member or owner. To enable access with OAuth, the user simply selects the desired application instance from the list, and clicks the 'generate keys' button. The generated Consumer Key and Secret will be associated with the given ODS user account & application instance. Once a consumer token is available, the sequence below must be executed in order to establish an authorized session: 1. client uses request_token to get a token/secret pair for establishing session using consumer token 2. client asks OAuth server to authorize the token from step-1 3. using authorized token from step-1 client asks OAuth server for authentication token. 4. with authentication token from step-3, clients can access instance data associated with the consumer token from step-1. ---+++ Sample OAuth Client To demonstrate the Virtuoso implementation of OAuth, we have written this sample client, in Virtuoso/PL. <verbatim> <html> <?vsp declare consumer_key, consumer_secret, oauth_token, oauth_secret, signature, timest, nonce varchar; declare srv, res, signature_base, ret_url, url, tmp, sid varchar; declare meth, pars any; consumer_key := {?'key'}; srv := sprintf ('http://localhost:%s/OAuth/', server_http_port ()); sid := null; res := ''; sid := {?'sid'}; if (sid = '') sid := null; else { -- if selected token is not same as one from the session we need to get new authentication token if (consumer_key <> OAUTH..get_consumer_key (sid)) { OAUTH..session_terminate (sid); sid := null; } } meth := get_keyword ('meth', params, 'weblog.post.new');; pars := get_keyword ('pars', params, 'inst_id=15&title=testing&description=Some test post');; if ({?'rt'} is not null and sid is null) -- request new token for the session { url := srv||'request_token'; url := OAUTH..sign_request ('GET', url, '', consumer_key, sid); res := http_get (url); sid := OAUTH..parse_response (sid, consumer_key, res); OAUTH..set_session_data (sid, params); ret_url := sprintf ('http://localhost:%s/oauth/oauth_client.vsp?ready=%U', server_http_port (), sid); -- call authorize url := sprintf ('%sauthorize?oauth_token=%U&oauth_callback=%U', srv, OAUTH..get_auth_token (sid), ret_url); http_status_set (301); http_header (sprintf ('Location: %s\r\n', url)); return; } else if ({?'ready'} is not null) -- get access token { -- we go here when token above is authorized sid := {?'ready'}; url := srv||'access_token'; consumer_key := OAUTH..get_consumer_key (sid); url := OAUTH..sign_request ('GET', url, '', consumer_key, sid); res := http_get (url); sid := OAUTH..parse_response (sid, consumer_key, res); } if (sid is not null) -- access token is ready, and we can call API { -- here we are ready to call service if ({?'rt'} is null) { tmp := OAUTH..get_session_data (sid); pars := get_keyword ('pars', tmp, pars); meth := get_keyword ('meth', tmp, meth); } url := sprintf ('http://localhost:%s/ods/api/%s', server_http_port (), meth); tmp := split_and_decode (pars); params := ''; for (declare i,l int, l:=length (tmp); i < l; i := i + 2) { params := params || sprintf ('%U=%U&', tmp[i], tmp[i+1]); } --params := sprintf ('inst_id=%d&description=%U&title=%U', 15, 'Some test post', 'testing'); consumer_key := OAUTH..get_consumer_key (sid); url := OAUTH..sign_request ('GET', url, params, consumer_key, sid); res := http_get (url); --dbg_obj_print (res); } ?> <head><title>OAuth Client</title></head> <body> <h1>OAuth client for ODS Controllers</h1> <form method="POST" action="oauth_client.vsp"> <input type="hidden" name="sid" value="<?V sid ?>"/> APPLICATION : <br /> <select name="key"> <?vsp for select a_name, a_key from OAUTH..APP_REG do { ?> <option value="<?V a_key ?>" <?vsp if (consumer_key = a_key) http ('selected'); ?>><?V a_name ?></option> <?vsp } ?> </select> <?vsp if (sid is not null) http (sprintf (' TOKEN: %s', OAUTH..get_auth_token (sid))); ?> <br /> ODS API: <br /><input type="text" name="meth" value="<?V meth ?>" size=50/> <br /> PARAMETERS: <br /> <textarea name="pars" rows="5" cols="50"><?V pars ?></textarea> <br /> <input type="submit" value="Execute" name="rt"/><br /> </form> RESULT: <hr/> <pre><?V res ?></pre> </body> </html> </verbatim> ---+++ Sample OAuth Session The following shows a sample session, using the above Virtuoso/PL OAuth client. <verbatim> GET /OAuth/request_token?oauth_consumer_key=50082d0fb861b0e6e67d5d986b8 333607edc5f36&oauth_nonce=b8f1089077cbce6e&oauth_signature_method=HMAC- SHA1&oauth_timestamp=1211212829&oauth_version=1.0&oauth_signature=V1zmk 757LBHcmqVJ6obMhNX5hKA%3D HTTP/1.1 Host: localhost:6666 HTTP/1.1 200 Ok Content-Length: NNN <CR/LF> oauth_token=86da75079d3aee0fab57a36fcffbf900768e4de3&oauth_token_secret =M... </verbatim> <verbatim> GET /OAuth/authorize?oauth_token=86da75079d3aee0fab57a36fcffbf900768e4d e3&oauth_callback=http%3A//localhost%3A6666/oauth/oauth_client.vsp%3Fre ady%3D00c874b2fab2f6424008b5064fe83e88 HTTP/1.1 Host: localhost:6666 HTTP/1.1 301 Moved Location: /ods/oauth_authorize.vspx?.... </verbatim> <verbatim> GET /OAuth/access_token?oauth_consumer_key=50082d0fb861b0e6e67d5d986b83 33607edc5f36&oauth_nonce=242cc4875a0059f6&oauth_signature_method=HMAC-S HA1&oauth_timestamp=1211212831&oauth_token=86da75079d3aee0fab57a36fcffb f900768e4de3&oauth_version=1.0&oauth_signature=sqs/8nmNNnNJiZ/eBa688uNe g9o%3D HTTP/1.1 Host: localhost:6666 HTTP/1.1 200 Ok Content-Length: NNN <CR/LF> oauth_token=N..&oauth_token_secret=M... </verbatim> <verbatim> GET /ods/api/weblog.post.new?description=Some%20test%20post&inst_id=15& oauth_consumer_key=50082d0fb861b0e6e67d5d986b8333607edc5f36&oauth_nonce =2f4765d20664e696&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1211 213321&oauth_token=db83a37d74faf53edc8ed56d418ded3a70fcc0bc&oauth_versi on=1.0&title=testing&oauth_signature=oocIyr6kgoEQkC3WVwzvl6w62W4%3D HTT P/1.1 Host: localhost:6666 HTTP/1.1 200 Ok Content-Length: NNN <CR/LF> <result><code>1&lt/code></result> </verbatim> ---++ Additional Information ---+++ General OAuth Information * [[http://www.hueniverse.com/hueniverse/2007/09/explaining-oaut.html][Explaining OAuth]] * [[http://www.hueniverse.com/hueniverse/2007/10/beginners-gui-1.html][Visual OAuth Usage Example]] * [[http://www.hueniverse.com/hueniverse/2008/10/beginners-guide.html][OAuth Beginners Guide - Part 3]] * [[http://oauth.net/core/1.0][OAuth specification]] * [[http://oauth.net/documentation/getting-started][Getting Started with OAuth]] * [[http://xml.coverpages.org/draft-dehora-farrell-oauth-accesstoken-creds-00.txt][OAuth Access Tokens Using Credentials specification]] * [[http://xml.coverpages.org/draft-hammer-oauth-00.txt][OAuth: HTTP Authorization Delegation Protocol specification]] * [[http://groups.google.com/group/oauth][Google OAuth Group]] ---+++ Virtuoso- and OpenLink-specific OAuth Information * [[OAuth][OpenLink's explanation of OAuth]] * [[VirtuosoOAuthServer][Virtuoso OAuth server]] * [[http://ods.openlinksw.com/dataspace/dav/wiki/ODS/VirtOAuthControllers][Using OAuth with ODS]] * [[http://ods.openlinksw.com/dataspace/dav/wiki/ODS/VirtuosoOdsUbiquity][ODS Ubiquity Commands]] * [[http://ods.openlinksw.com/dataspace/dav/wiki/ODS/VirtuosoOdsControllers][ODS Controllers]] * [[http://ods.openlinksw.com/dataspace/dav/wiki/ODS/VirtODSOAuthQA][Testing Virtuoso OAuth with 3rd Party OAuth Clients]] * [[http://ods.openlinksw.com/dataspace/dav/wiki/ODS/VirtuosoOdsUbiquityTutorialsOAuth][OAuth Ubiquity Tutorial]] * [[http://ods.openlinksw.com/dataspace/dav/wiki/ODS/VirtOAuthTestTool][Virtuoso OAuth Test Tool for ODS Controllers]] * [[VirtOAuthSPARQL][Virtuoso SPARQL OAuth Tutorial]] * [[http://ods.openlinksw.com/dataspace/dav/wiki/ODS/VirtuosoOdsUbiquityTutorials][ODS Ubiquity Tutorials]] * [[http://ods.openlinksw.com/dataspace/dav/wiki/ODS/VirtOAuthExamples][OAuth Applications Authentication examples]] * [[http://oauth.net/core/1.0/][OAuth API]]
sioc:id
3147997f22278d46be93bbae1e4f2647
sioc:link
n2:VirtOAuth
sioc:has_container
n16:VOS
n13:has_services
n12:item
atom:title
VirtOAuth
sioc:links_to
n4:VirtuosoOdsControllers n14:html n15:html n4:VirtOAuthExamples n17: n18:getting-started n4:VirtOAuthTestTool n4:VirtuosoOdsUbiquityTutorialsOAuth n4:VirtuosoOdsUbiquity n2:OAuth n4:VirtODSOAuthQA n4:VirtOAuthControllers n4:VirtuosoOdsUbiquityTutorials n19:oauth n22:txt n23:txt n24:html n25:0 n2:OpenLink
atom:source
n16:VOS
atom:author
n10:this
atom:published
2017-06-13T05:47:26Z
atom:updated
2017-06-29T07:38:49Z
sioc:topic
n16:VOS
Subject Item
n2:VirtuosoOAuthServer
sioc:links_to
n2:VirtOAuth
Subject Item
n2:VirtODSOAuthQA
sioc:links_to
n2:VirtOAuth