[Openid-specs-ab] Whether to allow http redirection URIs for confidential clients

Torsten Lodderstedt torsten at lodderstedt.net
Fri Oct 25 05:37:23 UTC 2013


Hi,

Why should connect support deployments with a bad security setup? I don't want our codes to leak and to be abused by attackers.

Furthermore: I don't get the intention of " confidential client needs to be required to use http". Does it mean confidential clients are forced to use http?

Regards,
Torsten.



John Bradley <ve7jtb at ve7jtb.com> schrieb:
>Sorry yes it went back and forth.  
>
>The question is if we should override the OAuth RFC's requirement for
>TLS on the client in favour of allowing adoption of connect by those
>web sites that don't implement TLS for login and session cookies.
>
>If a site has no TLS and can have it's cookies and passwords leaked,
>then Connect without TLS is arguably no worse than the current
>situation and arguably better because at-least the user is not leaking
>the password.
>
>So do we allow the bad thing to prevent the worse thing?
>
>This makes code more likely to leak, and there is no real protection
>possible other than using a hmac of the device fingerprint as the
>nonce,  but a TLS cert for the client is much simpler.
>
>John B.
>
>On 2013-10-24, at 11:37 AM, Mike Jones <Michael.Jones at microsoft.com>
>wrote:
>
>> John, you wrote: “At the IIW F2F we took a decision that we should
>match the RFC and require the client to have a TLS endpoint if using a
>http redirect.(not a custom scheme)”.  While the working group was
>leaning that way early in the discussion, Naveen and others pushed
>back, and that doesn’t actually match the decision that we recorded in
>the notes, which say:
>>             OP may prevent registration of redirect_uris that do not
>use https
>>             A confidential client needs to be required to use http
>>             We will discuss this further on the list
>>  
>> Consider this the start of the further discussion on the list.  What
>do people think?
>>  
>>                                                             -- Mike
>>  
>> From: openid-specs-ab-bounces at lists.openid.net
>[mailto:openid-specs-ab-bounces at lists.openid.net] On Behalf Of John
>Bradley
>> Sent: Thursday, October 24, 2013 5:42 AM
>> To: Vladimir Dzhuvinov / NimbusDS
>> Cc: openid-specs-ab at lists.openid.net
>> Subject: Re: [Openid-specs-ab] First Release Candidates for final
>OpenID Connect specifications
>>  
>> Snip
>> On 2013-10-24, at 1:36 AM, "Vladimir Dzhuvinov / NimbusDS"
><vladimir at nimbusds.com> wrote:
>> 
>> 
>> 
>> 
>> "When using this flow, the redirection URI MAY use the http scheme,
>provided that the Client Type is confidential, as defined in Section
>2.1 of OAuth 2.0; otherwise, it MUST use the https scheme" - This,
>surprisingly enough, is relaxed in comparison
>tohttp://tools.ietf.org/html/rfc6749#section-10.5.
>> 
>> RFC 6749 states: "Authorization codes operate as plaintext bearer
>credentials, used to verify that the resource owner who granted
>authorization at the authorization server is the same resource owner
>returning to the client to complete the process.  Therefore, if the
>client relies on the authorization code for its own resource owner
>authentication, the client redirection endpoint MUST require the use of
>TLS."
>> 
>> Why is Connect, in this particular case, less restrictive than OAuth?
>>  
>> John, can you speak to why we’re allowing http redirect_uri values
>when apparently OAuth doesn’t?
>> I had some questions on this point as well. I believe the thinking is
>that since the client is protecting the secret and the code is sent to
>the /token endpoint with client authentication, even if someone was
>able to hijack the code value they couldn't exchange it for the access
>(and possibly refresh) tokens. If we are trying to make things simpler,
>then just moving all of it to TLS makes sense. To me, the only
>exception is localhost. 
>> 
>> The attacker could inject the authorization code into the same
>application as used by the victim in order to impersonate her/him.
>> 
>> For this to happen the attacker should also have gained control over
>the RP (the application), i.e. have the RPs' authentication
>credentials.
>> 
>>  
>>  
>> Early OAuth 2 inherited the idea from OAuth 1 that the client didn't
>need to have a TLS cert.  We were matching that.  At the IIW F2F we
>took a decision that we should match the RFC and require the client to
>have a TLS endpoint if using a http redirect.(not a custom scheme)
>>  
>> Earlier in this thread there is also a question about exact
>redirect_uri matching and if it is required for confidential clients.  
>In the code flow if the token is leaked through an open redirector then
>it can be presented to the real client and the attacker gets in as the
>user.
>>  
>> The OAuth AS side mitigation of this is the confidential client
>passing the redirect URI to the AS in the token request and the AS
>performing an exact match on the redirect URI, and failing if it is
>different.   In the wild it appears AS are also not being sufficiently
>strict  on matching that and causing some problems in deployments.
>>  
>> The client side mitigation for this is using nonce in the signed
>token to allow the client to check on its own if it initiated the
>request through the same browser that presented the code. However that
>was left as optional for code.
>>  
>> At the end of the day the reality is that some of the large IdP only
>allow exact matching of redirect_uri.   If some are strict and some
>allow query parameters then clients using query parameters to carry
>state will fail and not be interoperable.
>>  
>> The WG decided that the strict matching of the redirect_uri by those
>IDP is allowed by the RFC,  rather than forcing them to change and do
>pattern matching for interoperability we precluded clients from hiding
>state in the query parameters and forced them to use the "state"
>parameter.
>>  
>> So yes for a fully RFC compliant OAuth server with a client that is
>truly confidential and not just pretending, it would be secure for the
>AS to relax the matching for the redirect_uri in the request to the
>authorization server as long as it records that URI and is doing an
>exact string match on it aginst the one sent to the token endpoint.  
>It is not however safe for a client to assume all AS are going to act
>that way.  The only safe thing for the client is to assume exact string
>match.
>>  
>> So while this relates to security issues the final decision was taken
>for interoperability of the client.
>>  
>> John B.
>>  
>>  
>>  
>
>
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Openid-specs-ab mailing list
>Openid-specs-ab at lists.openid.net
>http://lists.openid.net/mailman/listinfo/openid-specs-ab
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openid.net/pipermail/openid-specs-ab/attachments/20131025/e7f869a4/attachment-0001.html>


More information about the Openid-specs-ab mailing list