>-----Original Message-----
>From: daviesd [mailto:davi...@oclc.org]
>Sent: Tuesday, November 22, 2011 10:01 AM
>To: dev@shindig.apache.org
>Subject: Re: Oauth 2 consumer implementation
>
>So how does a gadget know what service name to use since every container
>could define facebook differently.

The following is based on my understanding from oauth 1.0 and I'm assuming it 
still applies to oauth 2.0 -- but I haven't spent much time looking at oauth 
2.0 yet so hopefully someone will correct me if any of this is no longer 
applicable...

I believe the gadget author needs to coordinate registration of their oauth 
details with each container they want to run their gadget in -- and part of 
that coordination process is for the gadget to define what service name to 
register the details under.  It's up to the gadget developer to coordinate with 
the service provider (like facebook) on getting the oauth details in the first 
place though.

As Ryan mentioned containers are free to define the "coordination" process any 
way they choose, but I think a common strategy might be for the gadget authors 
to register the details themselves as part of the gadget registration process.  
That's what we've done with our internal container implementation and what I 
believe we're planning to do in Apache Rave.

I just took a quick peruse through the opensocial 2.0 specification and it 
seems at a quick glance that all of what I've said above still applies, 
although it does seem that there is another case where the container can choose 
to register container-wide oauth details for a service provider -- I haven't 
seen that case used personally though so I can't really say too much more about 
that.  I assume if a container does that though they would need to advertise 
that fact to gadget developers and provide them all the details they would need 
to take advantage of it.  That would seem to imply though that users would just 
be authorizing the container as a whole though as opposed to a specific gadget 
which doesn't seem like what you'd want -- unless the specific gadget is 
communicated in the request somehow...  Maybe that's part of what oauth 2.0 
adds?  Hopefully someone who knows more about this specific use case can 
comment further.

One other thing worth pointing out is that the above all applies to 
three-legged oauth, but opensocial also supports signed fetch (aka two-legged 
oauth) which is kind of nice for when you want to setup an explicit trust 
relationship with an external provider where you don't actually need the user 
to approve access to their resources.

>doug
>
>On 11/21/11 2:34 PM, "Ryan J Baxter" <rjbax...@us.ibm.com> wrote:
>
>> Mike, usually the provider information is configured before hand.  Your
>> container could choose to allow gadget developers to register the provider
>> information, but this is outside the scope of Shindig and the OpenSocial
>> spec.
>>
>> -Ryan
>>
>> Email: rjbax...@us.ibm.com
>> Phone: 978-899-3041
>> developerWorks Profile
>>
>>
>>
>> From:   Michael Matthews <matth...@oclc.org>
>> To:     <dev@shindig.apache.org>,
>> Date:   11/21/2011 02:27 PM
>> Subject:        Oauth 2 consumer implementation
>>
>>
>>
>> My organization is investigating implementing a "production-ready" version
>> of Shindig's OAuth2 Consumer implementation. After reviewing the wiki at
>> opensocial.org (in particular
>>
>http://docs.opensocial.org/display/OSD/OAuth+2.0+Consumer+Implementat
>ion+in+
>>
>> Apache+Shindig) and studying  the code to Shindig's sample OAuth2
>Consumer
>> implementation, it appears that we need to implement our own version of
>> the
>> OAuth2PersistenceModule  (e.g. use a database instead of oauth2.json).
>>
>> Some of our remaining questions center around when/how some of the
>OAuth2
>> related data is persisted.
>>
>> Presumably, a gadget developer will declare what OAuth2 services they use
>> in
>> their gadget.xml like so:
>>
>> <OAuth2>
>>   <Service name="googleAPI_test"
>scope="https://www.google.com/m8/feeds/";>
>>     <Authorization
>> url="https://accounts.google.com/o/oauth2/auth";></Authorization>
>>     <Token url="https://accounts.google.com/o/oauth2/token";></Token>
>>   </Service>
>> </OAuth2>
>>
>> They will then invoke this service using gadgets.io.makeRequest().
>>
>> Is the expectation that the Shindig container have this OAuth2 provider
>> pre-configured before the gadget is rendered?  Is it possible to register
>> a
>> provider (in this case Google) at runtime?
>>
>> Thanks
>> Mike
>>
>>
>>
>

Reply via email to