This looks along the same lines as the solution my colleague here has proposed 
but I was unsure of the security implications and unaware of any existing 
implementations.

I agree that a standardised profile for this would be helpful.

Thanks,
Phil
On 5 Feb 2014, at 21:49, John Bradley wrote:

> You can use PostMessage if you control both the client and AS.
> 
> Google uses it in there identity toolkit if you use there g+ Java Script 
> client. http://www.riskcompletefailure.com/2013/03/postmessage-oauth-20.html
> 
> There is some example code at 
> https://code.google.com/p/oauth2-postmessage-profile
> 
> In OpenID Connect the same technique is used for session management. 
> http://openid.net/specs/openid-connect-session-1_0-18.html
> 
> You can do it but it would be custom to your AS.
> 
> John B.
> 
> 
> On Feb 5, 2014, at 6:22 PM, <philip.kers...@stfc.ac.uk> 
> <philip.kers...@stfc.ac.uk> wrote:
> 
>> Thanks all - some interesting points raised.
>> 
>> I've used the Authorisation Code grant for a couple of other use cases on 
>> other projects.  The Implicit Grant is less desirable but it fits here for 
>> me because of the particular constraints of the client and its hosting 
>> environment.  The level of security required is low.
>> 
>> I'd be interested in finding out about the examples that use a PostMessage 
>> approach that you mention John.
>> 
>> Phil
>> 
>> On 5 Feb 2014, at 20:33, John Bradley wrote:
>> 
>>> The implicit flow is intended to get a access code to JS clients in the 
>>> browser.   It is true that you could use the code flow, but only if the AS 
>>> token endpoint allowed CORES requests.
>>> 
>>> Given that the client is in the UA and has a direct TLS connection to the 
>>> Authorization endpoint, from the clients point of view the call to the 
>>> authorization endpoint and the call to the token endpoint are equally 
>>> secure.   
>>> 
>>> Given that Java Script in the browser typically can't protect a client 
>>> secret, the two flows are about equal in security for the AS.
>>> 
>>> It is true that people use implicit for things that they probably 
>>> shouldn't, but to get a token to Java Script in the UA implicit is probably 
>>> the best way to do it without jumping through extra hoops that don't add 
>>> anything.
>>> 
>>> At some point we need to do a PostMessage binding for Implicit as an option 
>>> passing the token in the fragment,  many implementations do that today for 
>>> JS clients but it is not interoperable without a profile.
>>> 
>>> John B.
>>> 
>>> 
>>> On Feb 5, 2014, at 4:40 PM, Prateek Mishra <prateek.mis...@oracle.com> 
>>> wrote:
>>> 
>>>> Well, there is a fundamental difference between the security properties of 
>>>> implicit vs. code flow: in the former access tokens are passed via URLs 
>>>> (protected only by the fragment URI requirement), whereas in the
>>>> latter this is never the case. So I do see a foundational difference in 
>>>> security properties between the two. The core issue the type of artifact 
>>>> exposed in network flows in both the models.
>>>> 
>>>> Another way to put it would be: the authorization code flow is a 
>>>> re-purposing of the well known SAML SSO Web Artifact profile which has a 
>>>> long history of deployment and use. The implicit flow "simplifies" that 
>>>> but there
>>>> are definitely some consequences from a security point of view.
>>>> 
>>>> I can see that certain low-value clients (or even better, clients for whom 
>>>> the client issuing entity assumes no liability :-) can reasonably utilize 
>>>> the implicit flow. But it would be good if its weaknesses were kept in 
>>>> mind.
>>>> 
>>>> - prateek
>>>>> While you should always factor in an analysis of the security properties 
>>>>> of your client, you should also realize that by hosting the client 
>>>>> completely inside the browser, most of the benefits of the code flow go 
>>>>> away. You're no longer able to separate the knowledge of different parts 
>>>>> of the protocol, and so much of what you're protecting with the auth code 
>>>>> doesn't actually apply anymore.
>>>>> 
>>>>> Also, if the user is using a user agent that is not conformant or up to 
>>>>> date, there's no need to sniff OAuth because it can just steal the 
>>>>> primary credentials from the auth server connection directly -- so the 
>>>>> counter argument is a bit of a red herring. Yes, it's a requirement for 
>>>>> this to work properly, but it's a requirement for many other things to 
>>>>> work properly also.
>>>>> 
>>>>> -- Justin
>>>>> 
>>>>> On Feb 5, 2014, at 1:33 PM, Prateek Mishra <prateek.mis...@oracle.com> 
>>>>> wrote:
>>>>> 
>>>>>> Well, this means you are completely dependent on a security model that 
>>>>>> is based on a very specific property of HTTP
>>>>>> redirects. The User agent MUST NOT forward any component of a fragment 
>>>>>> URI in a redirect - you are depending on the user having
>>>>>> a conformant and uptodate user agent.
>>>>>> 
>>>>>> I would say that the authorization code grant has more robust security 
>>>>>> properties. From my perspective depending
>>>>>> on this type of subtle and complex requirement on other layers of the 
>>>>>> protocol stack is a considerable risk.
>>>>>> 
>>>>>> So you should factor that in your analysis of the security properties of 
>>>>>> your client.
>>>>>> 
>>>>>> - prateek
>>>>>>> Hi Phil,
>>>>>>> 
>>>>>>> the server won't see the access-code, cause it is returned within the 
>>>>>>> hash
>>>>>>> that stays at the client-site:
>>>>>>>         http://.../returnUri#access_code=ABCDE.
>>>>>>> 
>>>>>>> By definition, the returnURI has to be the URI that was registered for 
>>>>>>> the
>>>>>>> client. IMHO, you are only allowed to add additional URL-Parameters.
>>>>>>> 
>>>>>>> In my opinion, your use-case suits _very_ well to the implicit flow.
>>>>>>> 
>>>>>>> Wishes,
>>>>>>> Manfred
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> -----Ursprüngliche Nachricht-----
>>>>>>> Von: OAuth [mailto:oauth-boun...@ietf.org] Im Auftrag von
>>>>>>> philip.kers...@stfc.ac.uk
>>>>>>> Gesendet: Mittwoch, 5. Februar 2014 10:12
>>>>>>> An: oauth@ietf.org
>>>>>>> Betreff: [OAUTH-WG] Suitable grant type for a Javascript use case
>>>>>>> 
>>>>>>> Hi all,
>>>>>>> 
>>>>>>> I'm looking to apply OAuth for a particular use case with a Javascript
>>>>>>> client and would like to get some guidance with this.  Bear with me as 
>>>>>>> I'm
>>>>>>> new to this list.
>>>>>>> 
>>>>>>> I have a Javascript client which needs to be deployed on a number of
>>>>>>> different sites for which we don't have control over the server-side 
>>>>>>> code.
>>>>>>> The client needs to obtain an access token to submit data to another 3rd
>>>>>>> party site on behalf of the user.
>>>>>>> 
>>>>>>> We've looked at the Implicit Grant type
>>>>>>> (http://tools.ietf.org/html/rfc6749#section-4.2).  Our third party site
>>>>>>> hosts an Authorisation server and Resource Server.  The client provides 
>>>>>>> a
>>>>>>> redirect URI to return the token to.  My understanding is that the 
>>>>>>> redirect
>>>>>>> URI is a security measure to ensure the token is returned to an endpoint
>>>>>>> known to the Authorisation Server.
>>>>>>> 
>>>>>>> However, in my case it is only the Javascript client that needs the 
>>>>>>> token.
>>>>>>> I can see how the token can be passed to the Javascript via step E in 
>>>>>>> figure
>>>>>>> 4.  However, we have limited control over the site hosting the 
>>>>>>> Javascript
>>>>>>> ('Web-hosted Client Resource' in Figure 4).  We can host Javascript but 
>>>>>>> we
>>>>>>> can't easily alter any server-side code.  There's a danger that the
>>>>>>> server-side code will choke when it receives the redirect the URI 
>>>>>>> containing
>>>>>>> the access token.  I'm wondering if there is a suitable workaround for 
>>>>>>> this.
>>>>>>> Can we dispense with the redirect URI or does this compromise security 
>>>>>>> too
>>>>>>> far?  Perhaps we should be looking at an implementing an alternative 
>>>>>>> grant
>>>>>>> type?
>>>>>>> 
>>>>>>> Any help much appreciated.
>>>>>>> 
>>>>>>> Cheers,
>>>>>>> Phil--
>>>>>>> Scanned by iCritical.
>>>>>>> _______________________________________________
>>>>>>> OAuth mailing list
>>>>>>> OAuth@ietf.org
>>>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>>>>> 
>>>>>>> _______________________________________________
>>>>>>> OAuth mailing list
>>>>>>> OAuth@ietf.org
>>>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>>>> _______________________________________________
>>>>>> OAuth mailing list
>>>>>> OAuth@ietf.org
>>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>> 
>>>> _______________________________________________
>>>> OAuth mailing list
>>>> OAuth@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/oauth
>>> 
>>> _______________________________________________
>>> OAuth mailing list
>>> OAuth@ietf.org
>>> https://www.ietf.org/mailman/listinfo/oauth
>> 
>> --
>> Scanned by iCritical.
> 

-- 
Scanned by iCritical.
_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to