<?xml version="1.0" encoding="utf-8"?>
<!-- 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
-->
<?xml-stylesheet type="text/xsl" href="https://rollerweblogger.org/roller-ui/styles/rss.xsl" media="screen"?><rss version="2.0" 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:atom="http://www.w3.org/2005/Atom" >
<channel>
  <title>Blogging Roller</title>
  <link>https://rollerweblogger.org/roller/</link>
    <atom:link rel="self" type="application/rss+xml" href="https://rollerweblogger.org/roller/feed/entries/rss?tags=oauth" />
  <description>Dave Johnson on open web technologies, social software and software development</description>
  <language>en-us</language>
  <copyright>Copyright 2026</copyright>
  <lastBuildDate>Tue, 7 Apr 2026 09:28:33 +0000</lastBuildDate>
  <generator>Apache Roller 6.1.5</generator>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/oauth_and_openid_take2</guid>
    <title>OAuth and OpenID: take2</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/oauth_and_openid_take2</link>
    <pubDate>Tue, 18 May 2010 13:48:47 +0000</pubDate>
    <category>Social Software</category>
    <category>facebook</category>
    <category>google</category>
    <category>identity</category>
    <category>oauth</category>
    <category>openid</category>
<description>&lt;p&gt;Lot&amp;#39;s of activity in the &lt;a href=&quot;http://openid.net/&quot;&gt;OpenID&lt;/a&gt; and &lt;a href=&quot;http://oauth.net/&quot;&gt;OAuth&lt;/a&gt; space recently. Both OAuth and OpenID have suffered from bad user experience, bad developer experience and low adoption. Now they&amp;#39;re in the process of re-invention and folks from both Google and Facebook are involved. Here&amp;#39;s my reading list so far on the topic:&lt;/p&gt;

&lt;ul&gt;
&lt;li style=&quot;padding-bottom:5px;&quot;&gt;&lt;em&gt;IETF OAuth working group&lt;/em&gt; - &lt;a href=&quot;http://tools.ietf.org/html/draft-ietf-oauth-v2-05&quot;&gt;The OAuth 2.0 Protocol - draft-ietf-oauth-v2-05&lt;/a&gt; is the latest draft of OAuth 2.0, published about two weeks ago.&lt;/li&gt;

&lt;li&gt;&lt;em&gt;Eran Hammer-Lahav&lt;/em&gt; - &lt;a href=&quot;http://hueniverse.com/2010/05/introducing-oauth-2-0/&quot;&gt;Introducing OAuth 2.0&lt;/a&gt; is an excellent overview of what&amp;#39;s different and new about OAuth 2.0, listing the six new flows that are supported including a username/password flow.&lt;/li&gt;

&lt;li&gt;&lt;em&gt;David Recordon (Facebook)&lt;/em&gt; - &lt;a href=&quot;http://openidconnect.com/&quot;&gt;OpenID Connect: A strawman...&lt;/a&gt; is a proposal for &amp;quot;OpenID Connect&amp;quot; a standard way to do what Facebook Connect and Google Friend Connect today, allow users to login sites with either their Facebook, Google or other identity provider credentials. &lt;/li&gt;

&lt;li&gt;&lt;em&gt;Chris Messina (Google)&lt;/em&gt; - &lt;a href=&quot;http://factoryjoe.com/blog/2010/05/16/combing-openid-and-oauth-with-openid-connect/&quot;&gt;Combining OpenID and OAuth with OpenID Connect&lt;/a&gt; covers the thinking behind OpenID Connect and the expansion of the &amp;quot;OpenID brand.&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;em&gt;Michael Calore (WebMonkey)&lt;/em&gt; -  &lt;a href=&quot;http://www.webmonkey.com/2010/05/new-openid-connect-proposal-could-solve-many-of-the-social-webs-woes/&quot;&gt;New &#145;OpenID Connect&#146; Proposal Could Solve Many of the Social Web&#146;s Woes&lt;/a&gt; covers motivations behind OpenID Connect, problems with OAuth and OpenID.&lt;/li&gt;

&lt;li&gt;&lt;em&gt;Joseph Holsten&lt;/em&gt; - &lt;a href=&quot;http://blog.josephholsten.com/2010/05/your-new-new-web-identity&quot;&gt;Your New New Web Identity&lt;/a&gt; another nice overview of the new OpenID and OAuth ideas, pushes back against dropping/reinventing of OpenID Attribute Exchange.&lt;/li&gt;

&lt;li&gt;&lt;em&gt;Tantek Celic&lt;/em&gt; - &lt;a href=&quot;http://tantek.com/2010/135/t2/openid-connect-complex-vocab-renaming-ignores-html-fails-user&quot;&gt;I&amp;#39;m calling bullshit on #OpenID Connect. Still too complex, ...&lt;/a&gt; is about one run-on tweet&amp;#39;s worth of contructive criticism&lt;/li&gt;
&lt;/ul&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/oauth_everywhere_continued</guid>
    <title>OAuth everywhere (continued)</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/oauth_everywhere_continued</link>
    <pubDate>Thu, 26 Mar 2009 02:00:00 +0000</pubDate>
    <category>Social Software</category>
    <category>oauth</category>
    <category>opensocial</category>
    <category>roller</category>
    <category>socialsite</category>
<atom:summary type="html">In my earlier &lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/roller/entry/oauth_everywhere&quot;&gt;OAuth everywhere&lt;/a&gt; post I explained at a high level &amp;quot;how I got a Roller Gadget working, one that uses OAuth to call Roller and enables Roller to use OAuth to call back to the social network.&amp;quot; I ended with some unanswered questions. In those post I&amp;#39;ll answer those questions with source code, screenshots and more.
</atom:summary><description>&lt;p&gt;In my earlier &lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/roller/entry/oauth_everywhere&quot;&gt;OAuth everywhere&lt;/a&gt; post I explained at a high level &amp;quot;how I got a Roller Gadget working, one that uses OAuth to call Roller and enables Roller to use OAuth to call back to the social network.&amp;quot; I ended with some unanswered questions:
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;How do I add my gadget to SocialSite so users can install and use it?
&lt;/li&gt;&lt;li&gt;How does SocialSite get the Consumer Key and Secret needed for calling Roller?
&lt;/li&gt;&lt;li&gt;How does Roller get the Consumer Key and Secret needed for calling SocialSite?
&lt;/li&gt;&lt;li&gt;How does the user authorize Roller&amp;#39;s access to his Profile information in SocialSite?
&lt;/li&gt;&lt;li&gt;When is OAuth support coming to the Roller trunk and can you use it for AtomPub?
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;i&gt;(that last question was answered in &lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/roller/entry/oauth_for_roller&quot;&gt;OAuth for AtomPub in Roller&lt;/a&gt; earlier this week)&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;Now that I&amp;#39;ve wrapped up my work on &lt;a class=&quot;external&quot; href=&quot;http://oauth.net&quot;&gt;OAuth&lt;/a&gt; in &lt;a class=&quot;external&quot; href=&quot;http://socialsite.dev.java.net&quot;&gt;SocialSite&lt;/a&gt; and OAuth in &lt;a class=&quot;external&quot; href=&quot;http://roller.apache.org&quot;&gt;Roller&lt;/a&gt;, I&amp;#39;m prepared to answer those questions. I&amp;#39;ll do it by reviewing how I developed my Social Roller gadget and set it up to work on &lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org&quot;&gt;http://rollerweblogger.org&lt;/a&gt;, my Roller and SocialSite powered site. 
&lt;/p&gt;
&lt;p&gt;Along the way, I&amp;#39;ll provide links to source code and screen-shots. I&amp;#39;ll be referring to the diagram from first post, so I&amp;#39;ll reproduce it here for the sake of convenience:
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/oauth-roller-socialsite.jpg&quot; alt=&quot;http://rollerweblogger.org/roller/resource/oauth-roller-socialsite.jpg&quot;&gt;
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;NOTE: this post is based on the current code in the &lt;a class=&quot;external&quot; href=&quot;https://socialsite.dev.java.net/source/browse/socialsite&quot;&gt;Project SocialSite SVN trunk&lt;/a&gt;. The things described below WILL NOT work with the SocialSite M3 release.&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-Step1DevelopAnOpenSocialApplication&quot;&gt;Step 1 - Develop an OpenSocial Application#&lt;/h4&gt;
&lt;p&gt;My first step was to develop an OpenSocial application for Roller. This application is made up of the three parts listed below. These are the parts show in light-blue in the diagram above.
&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;&lt;b&gt;An OpenSocial Gadget for Roller&lt;/b&gt; that a user can install into his SocialSite profile. An OpenSocial Gadget is defined by Gadget Specification, an XML file with the metadata, HTML, CSS and JavaScript that render the gadget&amp;#39;s user interface. I developed my gadget as a Roller page template and you can view it&amp;#39;s source code here: &lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/project/page/viewsource?pageName=gadget.xml&quot;&gt;gadget.xml&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;b&gt;A gadget setup page&lt;/b&gt;, a new JSP page in Roller that is called by the gadget to enable and disable Activity posting. This JSP page is protected by OAuth and returns data in JSON format to the gadget. View the source code here &lt;a class=&quot;external&quot; href=&quot;http://code.google.com/p/opensosuite/source/browse/trunk/components/apache_roller/copyover/setupgadget.jsp&quot;&gt;setupgadget.jsp&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;b&gt;A Roller Task&lt;/b&gt; that runs periodically, checks to see if any gadget users have created new blog posts and if they have, posts a Activity to SocialSite for each, by calling the OAuth-protected OpenSocial REST API provided by SocialSite. View the source code here &lt;a class=&quot;external&quot; href=&quot;http://code.google.com/p/opensosuite/source/browse/trunk/components/apache_roller/src/org/rollerweblogger/SocialRollerTask.java&quot;&gt;SocialRollerTask.java&lt;/a&gt;
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-Step2RegisterGadgetWithSocialSite&quot;&gt;Step 2 - Register gadget with SocialSite#&lt;/h4&gt;
&lt;p&gt;&lt;i&gt;This section answers the question &amp;quot;How do I add my gadget to SocialSite so users can install and use it?&amp;quot;&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;My next step was to register my application. Remember that SocialSite is intended to add social features to existing web sites and has very little user interface of its own, it&amp;#39;s mostly made up of gadgets. So, the way you register a new application on a SocialSite-enabled site is to sign-up as a user of that site, go to your profile page, install the SocialSite Developer Gadget and then use that gadget to register your new application. 
&lt;/p&gt;
&lt;p&gt;You can see a screenshot of the SocialSite Developer Gadget below. In the simplest case, you just enter the URL of your Gadget Specification, but I needed to take a couple of extra steps because my gadget needs to call an OAuth protected resource in Roller.
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/socialroller-register.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/socialroller-register.png&quot;&gt;
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;This next paragraph answers the question &amp;quot;How does SocialSite get the Consumer Key and Secret needed for calling Roller?&amp;quot;&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;I need my gadget to call back to the Roller setupgadget.jsp page (that&amp;#39;s part &lt;b&gt;#4&lt;/b&gt; in the diagram above) to enable/disable activity posting. Because that page is protected by OAuth, I had to go into Roller and get Roller&amp;#39;s site-wide OAuth key and secret (see also: &lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/roller/entry/oauth_for_roller&quot;&gt;OAuth for Roller&lt;/a&gt;) and then enter those it the Developer Gadget. SocialSite stores them and will use them to take care of the OAuth authentication process on each gadget call to Roller (in part &lt;b&gt;#2&lt;/b&gt; above).
&lt;/p&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-Step3ApproveGadgetRegistration&quot;&gt;Step 3 - Approve gadget registration#&lt;/h4&gt;
&lt;p&gt;Since I&amp;#39;m the administrator of my site, I approved my own gadget registration. I did this by logging into my site&amp;#39;s SocialSite admin console, went to the Gadget Management tab, saw my new gadget registration request and approved it. Here&amp;#39;s a screenshot of the Gadget Registration approval page:
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/socialroller-approval.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/socialroller-approval.png&quot;&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-Step4AddOAuthConsumerKeyAndSecretToRoller&quot;&gt;Step 4 - Add OAuth consumer key and secret to Roller#&lt;/h4&gt;
&lt;p&gt;&lt;i&gt;This next paragraph answers the question &amp;quot;How does Roller get the Consumer Key and Secret needed for calling SocialSite?&amp;quot;&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;After your gadget is approved for use on a SocialSite enabled site, you&amp;#39;ll find the consumer key and secret that Roller needs to call the OpenSocial REST API (that&amp;#39;s step &lt;b&gt;#6&lt;/b&gt; above) in the SocialSite Developer Gadget. Here&amp;#39;s what you see in the Developer Gadget once you gadget is approved.
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/socialroller-approved.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/socialroller-approved.png&quot;&gt;
&lt;/p&gt;
&lt;p&gt;My OpenSocial Roller application needs to know about those keys, so I put them in its configuration. For simplicity&amp;#39;s sake, I&amp;#39;m not going to go into the details of this step.
&lt;/p&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-Step5InstallTheSocialRollerGadget&quot;&gt;Step 5 - install the Social Roller gadget#&lt;/h4&gt;
&lt;p&gt;Finally, the OpenSocial Roller application is ready for use. To install it, I went to my profile page, clicked the Gadget Directory button, browsed through the gadgets until I found it and then clicked the install button. Here&amp;#39;s a screenshot of the SocialSite Gadget Directory, which you can access from the SocialSite Profile Gadget:
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/socialroller-gadgetdir.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/socialroller-gadgetdir.png&quot;&gt;
&lt;/p&gt;
&lt;p&gt;The Social Roller Gadget is the last item in the list, the &amp;quot;Simple Roller Gadget.&amp;quot;
&lt;/p&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-Step6AuthorizeAndEnableTheSocialRollerGadget&quot;&gt;Step 6 - authorize and enable the Social Roller gadget#&lt;/h4&gt;
&lt;p&gt;After I installed the gadget, it appeared in my Profile page as you can see in the screenshot below.  It&amp;#39;s installed and ready to run, but it&amp;#39;s not yet authorized to access my Roller account so it tells me &amp;quot;Before you can use this gadget, you must authorize it to access your Roller account.&amp;quot;
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/socialroller-unauthorized.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/socialroller-unauthorized.png&quot;&gt;
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Finally, I can answer the question &amp;quot;How does the user authorize Roller&amp;#39;s access to his Profile information in SocialSite?&amp;quot;&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;I want the gadget to access my Roller account so I clicked on the authorize link and saw this page popup, directly from Roller, which asks me to take the final step to authorize access.
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/socialroller-authorization.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/socialroller-authorization.png&quot;&gt;
&lt;/p&gt;
&lt;p&gt;After I clicked the authorize button, page disappeared and the Social Roller gadget redisplayed itself as you can see in the screenshot below. The gadget is now ready to access my Roller account and is asking me to enable activity posting:
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/socialroller-disabled.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/socialroller-disabled.png&quot;&gt;
&lt;/p&gt;
&lt;p&gt;I clicked the enable posting button and saw this:
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/socialroller-enabled.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/socialroller-enabled.png&quot;&gt;
&lt;/p&gt;
&lt;p&gt;And now, whenever I post a new blog entry, an activity is added to my profile. Here&amp;#39;s proof in the form of a screenshot:
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/socialroller-activities.png&quot; alt=&quot;http://rollerweblogger.org/roller/resource/socialroller-activities.png&quot;&gt;
&lt;/p&gt;
&lt;h4 id=&quot;section-dummyPage-Conclusion&quot;&gt;Conclusion#&lt;/h4&gt;
&lt;p&gt;I&amp;#39;ve done the work to enable OAuth in SocialSite and Roller, so now it&amp;#39;s possible to develop OpenSocial gadgets for Roller that will work with SocialSite and other OpenSocial containers. The Roller side of this work is now available in Apache Roller (in the SVN trunk), but the future of the SocialSite is still uncertain. 
&lt;/p&gt;
&lt;p&gt;I think SocialSite still has great potential. That&amp;#39;s why I&amp;#39;m spending so much time promoting it and moving it forward, but I can&amp;#39;t do it all myself. I&amp;#39;m joining IBM next week and as far as I know, SocialSite will NOT be part of my job. I&amp;#39;ll wrap up this series of posts tomorrow with a post discussing the future of Project SocialSite.
&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/oauth_for_rome_propono</guid>
    <title>OAuth for ROME Propono</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/oauth_for_rome_propono</link>
    <pubDate>Tue, 24 Mar 2009 12:00:00 +0000</pubDate>
    <category>Feeds</category>
    <category>atompub</category>
    <category>oauth</category>
    <category>propono</category>
    <category>roller</category>
    <category>rome</category>
<description>&lt;a href=&quot;https://rome.dev.java.net/&quot;&gt;
&amp;lt;img src=&amp;quot;http://rollerweblogger.org/roller/resource/rome-logo.png&amp;quot; 
alt=&amp;quot;ROME logo&amp;quot; align=&amp;quot;right&amp;quot; vspace=&amp;quot;10px&amp;quot; hspace=&amp;quot;10px&amp;quot; /&amp;gt;
&lt;/a&gt;

&lt;p&gt;Yesterday I wrote about &lt;a href=&quot;http://rollerweblogger.org/roller/entry/oauth_for_roller&quot;&gt;OAuth support in the upcoming Roller 5.0 release&lt;/a&gt;. Today I&amp;#39;m following up with a post about &lt;a href=&quot;http://oauth.net&quot;&gt;OAuth&lt;/a&gt; support in &lt;a href=&quot;http://wiki.java.net/bin/view/Javawsxml/RomePropono&quot;&gt;ROME Propono&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As you may remember, ROME Propono is a subproject of &lt;a href=&quot;http://rome.dev.java.net&quot;&gt;ROME&lt;/a&gt;, the Java-based RSS/Atom feed library. ROME Propono includes an &lt;a href=&quot;http://www.atomenabled.org/developers/protocol/&quot;&gt;AtomPub&lt;/a&gt; server library and an AtomPub client. I added OAuth support to the AtomPub client and in this post, I&amp;#39;ll show how you can use it to post to the Roller 5.0-dev (i.e. the snapshot build that I made available yesterday).&lt;/p&gt;

&lt;h4&gt;ROME 1.0 and coming soon: ROME Propono 1.0&lt;/h4&gt;

&lt;p&gt;In case you haven&amp;#39;t already heard, thanks to the recent hard work of Nick Lothian, &lt;a href=&quot;http://nicklothian.com/blog/2009/03/11/rome-10-released&quot;&gt;ROME 1.0 is now available&lt;/a&gt;. You can find downloads at &lt;a href=&quot;http://rome.dev.java.net&quot;&gt;rome.dev.java.net&lt;/a&gt; and a list of changes in the &lt;a href=&quot;http://wiki.java.net/bin/view/Javawsxml/RomeChangesLog&quot;&gt;Change Log&lt;/a&gt; there. To celebrate this momentous event, I&amp;#39;m planning on releasing ROME Propono 1.0 as well, and in preparation, I&amp;#39;ve made a release candidate available. The new Propono includes ROME 1.0 and support for OAuth. You can get it via the links below:&lt;/p&gt;

&lt;p style=&quot;margin-left:2em;&quot;&gt;
    &lt;a href=&quot;https://rome.dev.java.net/source/browse/*checkout*/rome/www/dist/rome-propono-1.0RC1.tar.gz&quot;&gt;rome-propono-1.0RC1.tar.gz&lt;/a&gt; (2.0 mb)
&lt;/p&gt;

&lt;p style=&quot;margin-left:2em;&quot;&gt;
    &lt;a href=&quot;https://rome.dev.java.net/source/browse/*checkout*/rome/www/dist/rome-propono-1.0RC1.zip&quot;&gt;rome-propono-1.0RC1.zip&lt;/a&gt; (3 mb)
&lt;/p&gt;


&lt;h4&gt;Posting to Roller via AtomPub and OAuth&lt;/h4&gt;

&lt;p&gt;To use the Propono AtomPub client, you place the Propono jars in your Java VM classpath and then call the &lt;code&gt;AtomClientFactory&lt;/code&gt; to get started, as described in the &lt;a href=&quot;https://rome.dev.java.net/apidocs/subprojects/propono/1.0/com/sun/syndication/propono/atom/client/package-summary.html&quot;&gt;ROME Propono 1.0 Javadocs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Below is a &lt;a href=&quot;http://groovy.codehaus.org/&quot;&gt;Groovy&lt;/a&gt; example that shows how to post a blog entry to Roller via AtomPub and OAuth. You can get the consumer key, secret and URLs you need to call your instance of Roller from the OAuth Credentials page in the Roller admin interface.&lt;/p&gt;

&lt;pre&gt;

  import com.sun.syndication.propono.atom.client.*
  import com.sun.syndication.feed.atom.*

  def authStrategy = new OAuthStrategy(
    &amp;quot;roller&amp;quot;,                               // username
    &amp;quot;55132608a2fb68816bcd3d1caeafc933&amp;quot;,     // consumer key
    &amp;quot;bb420783-fdea-4270-ab83-36445c18c307&amp;quot;, // consumer secret
    &amp;quot;HMAC-SHA1&amp;quot;,                            // key type
    &amp;quot;http://blogs.example.com/roller-services/oauth/requestToken&amp;quot;,
    &amp;quot;http://blogs.example.com/roller-services/oauth/authorize&amp;quot;,
    &amp;quot;http://blogs.example.com/roller-services/oauth/accessToken&amp;quot;)

  // get the AtomPub service
  def appService = AtomClientFactory.getAtomService(
    &amp;quot;http://blogs.example.com/roller-services/app&amp;quot;, authStrategy)

  // find workspace of my blog
  def blog = appService.findWorkspace(&amp;quot;Blogging Roller&amp;quot;)

  // find collecton that will accept entries
  def entries = blog.findCollection(null, &amp;quot;application/atom+xml;type=entry&amp;quot;)

  // create and post an entry
  def entry = entries.createEntry()
  entry.title = &amp;quot;TestPost&amp;quot;
  def content = new Content()
  content.setValue(&amp;quot;This is a test post. w00t!&amp;quot;)
  entry.setContent([content])
  entries.addEntry(entry)

&lt;/pre&gt;


&lt;p&gt;If you have questions or feedback about ROME Propono 1.0 RC1, please post them to the &lt;a href=&quot;https://rome.dev.java.net/servlets/ProjectMailingListList&quot;&gt;ROME dev mail list&lt;/a&gt; and I&amp;#39;ll do my best to respond there.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/oauth_for_roller</guid>
    <title>OAuth for AtomPub in Roller</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/oauth_for_roller</link>
    <pubDate>Mon, 23 Mar 2009 12:00:00 +0000</pubDate>
    <category>Roller</category>
    <category>atompub</category>
    <category>oauth</category>
    <category>roller</category>
<description>&lt;a href=&quot;http://roller.apache.org&quot;&gt;
&lt;img src=&quot;http://rollerweblogger.org/images/rollerbadge.png&quot; alt=&quot;powered by Roller badge&quot; align=&quot;right&quot; hspace=&quot;10&quot; vspace=&quot;10&quot; border=&quot;0&quot;&gt;
&lt;/a&gt;

&lt;p&gt;Over the past month or so I&amp;#39;ve been adding &lt;a href=&quot;http://oauth.net&quot;&gt;OAuth&lt;/a&gt; support to just about every open source project that I can commit to. I added OAuth support to &lt;a href=&quot;http://roller.apache.org&quot;&gt;Roller&lt;/a&gt; so that you can now use OAuth to protect Roller&amp;#39;s &lt;a href=&quot;http://www.atomenabled.org/developers/protocol/&quot;&gt;AtomPub&lt;/a&gt; server and other things. I also added OAuth support to &lt;a href=&quot;http://wiki.java.net/bin/view/Javawsxml/RomePropono&quot;&gt;ROME Propono&lt;/a&gt;&amp;#39;s AtomPub client so you can now use Propono to post to Roller (more about that later). Here&amp;#39;s a quick overview of how OAuth in Roller works.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;NOTE that this post applies to Roller 5.0, which has not yet been officially released.&lt;/i&gt;&lt;/p&gt;


&lt;h4&gt;Setting up OAuth for AtomPub in Roller&lt;/h4&gt;

&lt;p&gt;If you want to use OAuth with AtomPub on your Roller site, go to the Server Admin page and find the Web Services section, enable AtomPub and specify &amp;#39;oauth&amp;#39; as the authentication mechanism, like so:&lt;/p&gt;

&amp;lt;img src=&amp;quot;http://rollerweblogger.org/roller/resource/rol_oauthconfig.jpg&amp;quot; 
    alt=&amp;quot;OAuth config in Roller 5.0-dev&amp;quot; /&amp;gt; 


&lt;h4&gt;Getting your OAuth key, secret and URLs&lt;/h4&gt;

&lt;p&gt;Once you&amp;#39;ve done the setup, you&amp;#39;ll find an OAuth Credentials link on the Roller Main Menu page, which will lead you a page like the one below showing your OAuth consumer key &amp;amp; secret and, if you are a site admin user, the site-wide key &amp;amp; secret. Currently, there&amp;#39;s only one set of site-wide credentials; I plan to fix that.&lt;/p&gt; 

&lt;img src=&quot;http://rollerweblogger.org/roller/resource/rol_oauthkeys.jpg&quot; alt=&quot;OAuth keys page in Roller 5.0-dev&quot;&gt;

&lt;p&gt;Of course, those aren&amp;#39;t my real keys. You&amp;#39;ll want to keep your OAuth keys secret as they can enable anybody to access your Roller account via AtomPub.&lt;/p&gt;


&lt;h4&gt;Want to try it yourself?&lt;/h4&gt;

&lt;p&gt;I mentioned that Roller 5.0 has not yet been released and that&amp;#39;s true. There&amp;#39;s still a lot of work to be done on 5.0, but that doesn&amp;#39;t mean you can&amp;#39;t get your hands on the code and binaries now. To make it easy, I&amp;#39;ve made an &lt;b&gt;unofficial snapshot&lt;/b&gt; version of Roller 5.0-dev available for testing purposes only. It&amp;#39;s what I&amp;#39;m running on my site. You can get it here in two flavors:&lt;/p&gt;

&lt;p style=&quot;margin-left:2em;&quot;&gt;
    &lt;a href=&quot;http://people.apache.org/~snoopdave/snapshots/apache-roller-5.0-dev-20090321-SNAPSHPOT.tar.gz&quot;&gt;apache-roller-5.0-dev-20090321-SNAPSHPOT.tar.gz&lt;/a&gt; (31 mb)
&lt;/p&gt;

&lt;p style=&quot;margin-left:2em;&quot;&gt;
    &lt;a href=&quot;http://people.apache.org/~snoopdave/snapshots/apache-roller-5.0-dev-20090321-SNAPSHPOT.zip&quot;&gt;apache-roller-5.0-dev-20090321-SNAPSHPOT.zip&lt;/a&gt; (31 mb)
&lt;/p&gt;

&lt;p&gt;The instructions in the old &lt;a href=&quot;http://roller.apache.org/download.cgi#roller40&quot;&gt;Roller 4.0 installation guide&lt;/a&gt; should work fine, so follow them to install and configure the 5.0-dev SNAPSHOT. Please send questions and feedback to either the &lt;a href=&quot;http://cwiki.apache.org/confluence/display/ROLLER/Roller+Mailing+Lists&quot;&gt;Roller dev mail list&lt;/a&gt; and I&amp;#39;ll do my best to respond there.&lt;/p&gt;

&lt;p&gt;You&amp;#39;ll also need an OAuth capable AtomPub client. More on that topic tomorrow...&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/sidebar_what_is_oauth</guid>
    <title>Sidebar: What is OAuth and why should you care?</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/sidebar_what_is_oauth</link>
    <pubDate>Mon, 23 Mar 2009 08:01:39 +0000</pubDate>
    <category>Social Software</category>
    <category>atompub</category>
    <category>oauth</category>
    <category>opensocial</category>
<description>&lt;img src=&quot;http://rollerweblogger.org/roller/resource/oauth-logo.png&quot; alt=&quot;OAuth logo&quot; align=&quot;right&quot; vspace=&quot;10&quot; hspace=&quot;10&quot;&gt;

&lt;p&gt;I&amp;#39;m going to be following up my &lt;a href=&quot;http://rollerweblogger.org/roller/entry/oauth_everywhere&quot;&gt;OAuth everywhere!&lt;/a&gt; post, with several more OAuth related posts this week. So, just in case you are wondering &amp;quot;why is Dave going off on this cockamamie OAuth tangent?&amp;quot;, I&amp;#39;ll take some time now to explain a little about OAuth to help you understand.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://oauth.net&quot;&gt;OAuth&lt;/a&gt; is a emerging protocol that one web site can use to access your data on another website without asking you to reveal your username and password. For example, when the sinister BuddyNet9000(TM) Social Network site wants to access your GMail account so it can spam your &amp;quot;friends&amp;quot; on your behalf, you can use OAuth to give it access without telling it your username and password. Why risk your GMail security when all you want to do is spam some people? There are less snarky examples, but that one makes the point well, I think.&lt;/p&gt;

&lt;p&gt;There&amp;#39;s a good end-user oriented introduction on &lt;a href=&quot;http://oauth.net&quot;&gt;OAuth.net&lt;/a&gt; titled &lt;a href=&quot;http://www.hueniverse.com/hueniverse/2007/10/beginners-gui-1.html&quot;&gt;Beginner&amp;#39;s Guide to OAuth: Protocol Workflow&lt;/a&gt;. OAuth is not that widely deployed yet, and is not perfect, but it is emerging and going the &lt;a href=&quot;http://bitworking.org/news/411/oauth-ietf-charter&quot;&gt;IETF standards route&lt;/a&gt;.&lt;/p&gt; 

&lt;p&gt;I&amp;#39;m interested in OAuth because it&amp;#39;s part of the &lt;a href=&quot;http://opensocial.org&quot;&gt;OpenSocial&lt;/a&gt; spec, used to authorize access to the OpenSocial REST API and to enable OpenSocial Gadgets to call out to OAuth protected resources. Also, because it&amp;#39;s used to protect &lt;a href=&quot;http://www.atomenabled.org/developers/protocol/&quot;&gt;AtomPub&lt;/a&gt;-based services, including the &lt;a href=&quot;http://code.google.com/apis/gdata/articles/oauth.html&quot;&gt;Google Data APIs&lt;/a&gt;. I needed to learn about it for my Roller and SocialSite work and if you&amp;#39;re going to be doing much OpenSocial work, you&amp;#39;ll need to learn about it too.&lt;/p&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/apachecon_eu_2009</guid>
    <title>ApacheCon EU 2009!</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/apachecon_eu_2009</link>
    <pubDate>Sun, 22 Mar 2009 14:19:16 +0000</pubDate>
    <category>Social Software</category>
    <category>apachecon</category>
    <category>jspwiki</category>
    <category>oauth</category>
    <category>opensocial</category>
    <category>roller</category>
<description>
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/snoopdave/481130847/&quot; title=&quot;View of art center (foreground) and Movenpick Hotel by snoopdave, on Flickr&quot;&gt;&lt;img src=&quot;http://farm1.static.flickr.com/202/481130847_87a45d2910_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; vpsace=&quot;10&quot; hspace=&quot;10&quot; alt=&quot;View of art center (foreground) and Movenpick Hotel&quot; align=&quot;right&quot;&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;I&amp;#39;m off to &lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009&quot;&gt;ApacheCon EU 2009&amp;gt; tomorrow in Amsterdam to  speak on the topic of &lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009/sessions/184&quot;&gt;Shindig for Blogs and Wikis&lt;/a&gt;. I&amp;#39;m really looking forward to catching up with my Apache friends and colleagues. That&amp;#39;s the conference venue in the photo on the right, the Movenpick hotel (in the background behind the music hall). &lt;/a&gt;&lt;/p&gt;


&lt;p&gt;I&amp;#39;m staying a couple of extra days, so I hope to have time for bicycling around the city as I&amp;#39;ve done in the past (see also: Flickr photo sets for &lt;a href=&quot;http://www.flickr.com/photos/snoopdave/sets/72157604420939847/&quot;&gt;2007&lt;/a&gt; and &lt;a href=&quot;http://www.flickr.com/photos/snoopdave/sets/72157604616476673&quot;&gt;2008&lt;/a&gt;). Unfortunately, the weather forecast stinks. There&amp;#39;s a 60% chance of rain every day that I&amp;#39;m in town. Oh well; guess I&amp;#39;ll have plenty of time for blogging. &lt;/p&gt;


&lt;p&gt;Speaking of blogging.This week, I&amp;#39;ll be posting some blog entries to highlight the work that I&amp;#39;ve done in preparation for my talk. Here&amp;#39;s what I plan to cover:&lt;/p&gt;


&lt;p&gt;* Monday: OAuth for AtomPub in Roller&lt;br&gt;
* Tuesday: OAuth for ROME Propono&lt;br&gt;
* Wednesday: SocialSite on rollerweblogger.org&lt;br&gt;
* Thursday: OAuth everywhere (continued)&lt;br&gt;
* Friday: the future of Project SocialSite&lt;/p&gt;


&lt;p&gt;If you plan to attend my talk, at 4:30PM on Friday March 27, then you should follow along. Pay special attention to the SocialSite on rollerweblogger.org and OAuth everywhere (continued) posts, which will include detailed background info. I&amp;#39;m looking forward to seeing you there.&lt;/p&gt;

</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/latest_links40</guid>
    <title>Latest Links</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/latest_links40</link>
    <pubDate>Tue, 8 Jul 2008 14:00:05 +0000</pubDate>
    <category>Links</category>
    <category>energy</category>
    <category>google</category>
    <category>java</category>
    <category>netbeans</category>
    <category>oauth</category>
<description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.infoworld.com/article/08/07/07/28TC-ruby-ides_1.html&quot;&gt;InfoWorld 2008-07-07 Lab test: Climb aboard Ruby on Rails&lt;/a&gt;&lt;br&gt;Interesting that the best rated Ruby-on-Rails IDE is the one that is free &amp;amp; opensource. Go Netbeans!&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.tbray.org/ongoing/When/200x/2008/07/07/Atom&quot;&gt;ongoin Â· Atomic Monday&lt;/a&gt;&lt;br&gt;&amp;quot;Herewith some evidence, for the general tech public, that Atompub is a big deal&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.infoq.com/articles/atomserver&quot;&gt;InfoQ: AtomServer â&#128;&#147; The Power of Publishing for Data Distribution&lt;/a&gt;&lt;br&gt;&amp;quot;a distributed, publish-subscribe service is a great way to address resiliency and loose coupling of subsystems&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blog.reddit.com/2008/06/reddit-goes-open-source.html&quot;&gt;blog.reddit -- what&amp;#39;s new on reddit: reddit goes open source&lt;/a&gt;&lt;br&gt;&amp;quot;Until now, the only portion of reddit that wasn&amp;#39;t freely available is reddit itself&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://googledataapis.blogspot.com/2008/06/oauth-for-google-data-apis.html&quot;&gt;OAuth for Google Data APIs&lt;/a&gt;&lt;br&gt; &amp;quot;we&amp;#39;re proud to announce that all of the Google Data APIs support OAuth&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://google-code-updates.blogspot.com/2008/07/protocol-buffers-our-serialized.html&quot;&gt;Google Code Blog: Protocol Buffers released as Open Source&lt;/a&gt;&lt;br&gt;&amp;quot;think XML, but smaller, faster, and simpler&amp;quot;&lt;/li&gt;

&lt;br&gt;

&lt;li&gt;&lt;a href=&quot;http://www.dailykos.com/storyonly/2008/6/29/123633/282&quot;&gt;Daily Kos: Cars After The Age of Oil&lt;/a&gt;&lt;br&gt;&amp;quot;We can switch to a new tech that is older and simpler than the Internal Combustion Engine - the electric horseless carriage was first created in 1830&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blog.wired.com/cars/2008/07/laugh-at-high-g.html&quot;&gt;Wired.com: Laugh at High Gas Prices With a 282-MPG VW&lt;/a&gt;&lt;br&gt;&amp;quot;VW has approved a plan to build a limited number of One-Liters in 2010&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.newraleigh.com/articles/archive/sas-solar-farm/#When:16:22:00Z&quot;&gt;SAS Solar Farm | New Raleigh, NC&lt;/a&gt;&lt;br&gt; &amp;quot;Our local 500 pound software gorilla is building a five acre, one megawatt photovoltaic solar farm&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
</description>  </item>
</channel>
</rss>