I agree that using a JWT is not the only way to do it, however many clients 
were not sending state at all or doing something insecure.

Particularly some people were having trouble with AS like Google who do exact 
redirect_uri matching and not being able to see how to pass multiple parameters 
in state rather then tacking extra query parameters on to the redirect_uri.

Documenting how to do it with a JWT and some of the security considerations 
specific to crating a useful state value has been useful to some people.

RFC 6819 has only a short section on state.

3.6 <https://tools.ietf.org/html/rfc6819#section-3.6>.  "state" Parameter

   The "state" parameter is used to link requests and callbacks to
   prevent cross-site request forgery attacks (see Section 4.4.1.8 
<https://tools.ietf.org/html/rfc6819#section-4.4.1.8>)
   where an attacker authorizes access to his own resources and then
   tricks a user into following a redirect with the attacker's token.
   This parameter should bind to the authenticated state in a user agent
   and, as per the core OAuth spec, the user agent must be capable of
   keeping it in a location accessible only by the client and user
   agent, i.e., protected by same-origin policy.

That is a bit hand wavy for some developers who wanted examples.

In any event I think we agree that dragging the whole JWT signed state draft 
into the checking state mitigation.

The mitigation makes checking the integrity of state by the client signing less 
important, as tampering with the value would be detected by the server in the 
code flow.

Perhaps as we develop the mitigation spec we could move some of the more 
critical advice on how to bind the browser instance to the state over to the 
mitigation draft.

John B.


> On Jan 22, 2016, at 1:32 PM, Thomas Broyer <t.bro...@gmail.com> wrote:
> 
> 
> Hi John,
> 
> 
> Le jeu. 21 janv. 2016 15:42, John Bradley <ve7...@ve7jtb.com 
> <mailto:ve7...@ve7jtb.com>> a écrit :
> We merged the state verification in with this rather than forcing people to 
> also look at the JWT encoded State draft.  
> https://tools.ietf.org/html/draft-bradley-oauth-jwt-encoded-state 
> <https://tools.ietf.org/html/draft-bradley-oauth-jwt-encoded-state>.  
> 
> While JWT encoded state is how I would do state in a client and at-least one 
> client I know of uses it, it is not the only way to manage state,
> 
> And not how I'd do it (unless you convince me that jwt is really better and 
> the advantages outweigh the network bloat)
> 
> and I am hesitant that developers might be scared away by thinking they need 
> to encode state as a JWT.
> 
> I decided that cross referencing them is better.   This made sending much 
> simpler to describe.   
> 
> Wouldn't linking to RFC 6819 be enough?
> 
> I also removed the hashing from state.   That cut the text by about 2/3 by 
> not having to describe character set normalization so that both the client 
> and the AS could calculate the same hash.
> That also achieved the goal of not requiring a simple OAuth client doing the 
> code flow to add a crypto library to support SHA256.
> 
> Once we make a algorithm mandatory, we need to defend why we don’t have 
> crypto agility eg support for SHA3 etc.  We would be forced by the IESG to 
> add another parameter to the request to specify the hash alg if we went that 
> direction.
> 
> Given that we assume state to be public info in the request that an attacker 
> can see, hashing state provides not much value for a lot of complexity that 
> people may get wrong or not implement.
> 
> I appreciate why from a theory point of view hashing it would have been 
> better.
> 
> If people really want it I can add it back.
> 
> John B.
> 
>> On Jan 21, 2016, at 3:28 AM, Mike Jones <michael.jo...@microsoft.com 
>> <mailto:michael.jo...@microsoft.com>> wrote:
>> 
>> John Bradley and I collaborated to create the second OAuth 2.0 Mix-Up 
>> Mitigation draft.  Changes were:
>> ·       Simplified by no longer specifying the signed JWT method for 
>> returning the mitigation information.
>> ·       Simplified by no longer depending upon publication of a discovery 
>> metadata document.
>> ·       Added the “state” token request parameter.
>> ·       Added examples.
>> ·       Added John Bradley as an editor.
>>  
>> The specification is available at:
>> ·       http://tools.ietf.org/html/draft-jones-oauth-mix-up-mitigation-01 
>> <http://tools.ietf.org/html/draft-jones-oauth-mix-up-mitigation-01>
>>  
>> An HTML-formatted version is also available at:
>> ·       
>> http://self-issued.info/docs/draft-jones-oauth-mix-up-mitigation-01.html 
>> <http://self-issued.info/docs/draft-jones-oauth-mix-up-mitigation-01.html>
>>  
>>                                                           -- Mike
>>  
>> P.S.  This note was also posted at http://self-issued.info/?p=1526 
>> <http://self-issued.info/?p=1526> and as @selfissued 
>> <https://twitter.com/selfissued>.
>>  
>> _______________________________________________
>> OAuth mailing list
>> OAuth@ietf.org <mailto:OAuth@ietf.org>
>> https://www.ietf.org/mailman/listinfo/oauth 
>> <https://www.ietf.org/mailman/listinfo/oauth>
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org <mailto:OAuth@ietf.org>
> https://www.ietf.org/mailman/listinfo/oauth 
> <https://www.ietf.org/mailman/listinfo/oauth>

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to