Or by OAuth 2 PoP.    

> On Mar 17, 2015, at 6:00 PM, Bill Mills <[email protected]> wrote:
> 
> "Yes but it is custom.  People are inventing structured scopes like 
> "aud:https://foo.com <http://foo.com/>", and that potentially doesn't solve 
> the security issue if a client just passes on the scopes it receives in the 
> error response, the bad RS just adds a scope for the good RS."
> 
> This isn't solved by "aud", it is solved by OAuth 1.0a though....
>  
> 
> 
> 
> On Tuesday, March 17, 2015 1:54 PM, John Bradley <[email protected]> wrote:
> 
> 
> Yes but it is custom.  People are inventing structured scopes like 
> "aud:https://foo.com <http://foo.com/>", and that potentially doesn't solve 
> the security issue if a client just passes on the scopes it receives in the 
> error response, the bad RS just adds a scope for the good RS.
> 
> The client then potentially needs to understand the custom structures scopes 
> of every AS it might deal with.
> 
> I think that would lead to lots of problems trying to make that a pattern 
> long term.   At teh moment yes you can do it with a scope as long as the 
> client and AS both understand what is going on.
> 
> 
> We added "aud" as a separate parameter for PoP as the token format for 
> different RS might be different as well as the symmetric  pop keys needing to 
> be encrypted with different keys.
> Yes we could have invented a special scope to carry the audience but a 
> separate parameter was much cleaner.
> 
> I know some people have started using "aud" as a way to communicate the 
> resource when a scope applies to multiple RS but they may take different 
> token formats JWT vs opaque etc.
> 
> Brian commented that the "aud" parameter may be useful beyond PoP so we might 
> want to think about documenting it in it's own mini spec, if I understood him 
> correctly.
> 
> I think that may not be a bad idea as we are also planning on using it in 
> NAPPS.
> 
> John B.
> 
>> On Mar 17, 2015, at 5:39 PM, Bill Mills <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> I don't think it's "overloading scope names" to use them that way.  The aud 
>> value(s) could as easily be carried in scope as anywhere.  Nothing says a 
>> scope can't be "https://foo.com <https://foo.com/>", and that Foo.com 
>> <http://foo.com/> requires that scope to be present for a token to be 
>> accepted.  I would not make it foo.com <http://foo.com/>-read-mail for 
>> example.
>> 
>> If it's more convenient to put it in aud I can accept that, but it's the 
>> same functionality and can be implemented in scopes now.
>> 
>> 
>> 
>> On Tuesday, March 17, 2015 12:41 PM, John Bradley <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> 
>> People have been overloading scope names to create implicit audience.   
>> 
>> The problem is that clients need to know via some magic method that you need 
>> to ask for scope "purple" to get write access to RS 2.
>> 
>> Having an explicit "aud" parameter gives clients a way to communicate to the 
>> AS what RS they are asking for a token for. 
>> 
>> the security issue is that if a client discovers a API out via some out of 
>> band mechanism the OAuth error code can tell the client go to AS X and ask 
>> for Scope Y.  
>> 
>> Unfortunately without POP tokens or at-least passing the URI of the RS to 
>> the AS via "aud", a bad RS could get a legitimate client to give it a token 
>> that can be replayed at a legitimate RS.
>> 
>> This was one of the issues that Eran Hammer-Lahav was particularly concerned 
>> about.  
>> 
>> I think I proposed a "aud" parameter to the token endpoint back then as a 
>> alternative to requiring HMAC tokens, but that got lost in the confusion at 
>> the time.
>> 
>> At that time though people were not yet thinking about interoperable OAuth 
>> API,  only relatively tightly bound clients that were preconfigured for the 
>> API endpoints they were using.
>> 
>> In Health and other places we are starting to see standard clients that 
>> discover API endpoints and configure themselves based on a users Identity to 
>> use a arbitrary OAuth AS, moving into federation of AT.
>> 
>> That is one of the reasons POP will be important, as it prevents RS from 
>> misusing federated tokens by presenting them at other RS.
>> 
>> The simplest thing to do is have the client say what RS it is trying to 
>> access explicitly (The "aud" parameter), and including an audience in the 
>> AT.  to protect against malicious RS.
>> 
>> PoP is the step up that also protects against tokens being intercepted and 
>> replayed by another client.
>> 
>> John B.
>> 
>>> On Mar 17, 2015, at 4:10 PM, Bill Mills <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>> 
>>> This may have been hashed out already and I missed it, but "aud" just 
>>> becomes another kind of scope, correct?
>>> 
>>> 
>>> 
>>> 
>>> On Tuesday, March 17, 2015 8:50 AM, John Bradley <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>> 
>>> 
>>> You could do that, but it is probably safer for the AS to know what RS it 
>>> can issue tokens for and refuse to issue a token for RS A to a client 
>>> asking for a token with RS X as the aud.
>>> 
>>> John B.
>>>> On Mar 16, 2015, at 8:27 PM, Dixie Baker <[email protected] 
>>>> <mailto:[email protected]>> wrote:
>>>> 
>>> 
>>> The threat that RFC6819 4.6.4 describes is when a client obtains an AT and 
>>> then sends it to a counterfeit RS, which then uses the AT to access 
>>> resources from a legitimate RS, on the end-user's behalf.  
>>> 
>>> The suggested countermeasure is a bit difficult to interpret:  "Associate 
>>> the endpoint URL of the resource server the client talked to with the 
>>> access token (e.g., in an audience field) and validate the association at a 
>>> legitimate resource server.  The endpoint URL validation policy may be 
>>> strict (exact match) or more relaxed (e.g., same host).  This would require 
>>> telling the authorization server about the resource server endpoint URL in 
>>> the authorization process."  
>>> 
>>> As I read this, the suggestion is to have the client pass the URL of the 
>>> bad RS in the request to the AS (using the audience field).  The AS then 
>>> would include that RS URL in the AT.  Then, when the client passes the AT 
>>> to the bad RS, and it passes it on to the good RS, the good RS will check 
>>> the audience field, compare that URL with its own, and refuse the request.  
>>> 
>>> -Dixie
>>> 
>>> 
>>> 
>>> Dixie B. Baker, Ph.D.
>>> Senior Partner
>>> Martin, Blanck and Associates
>>> Office (Redondo Beach, CA):  310-791-9671
>>> Mobile:  310-279-2579
>>> 
>>> On Mar 16, 2015, at 11:39 AM, John Bradley <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>> 
>>> 
>>> Brian and I were talking about "aud" used as a parameter to the token 
>>> endpoint when using a code or refresh token to indicate what RS the 
>>> resulting AT will be used at.
>>> 
>>> Sending a audience in the AT wouldn't help prevent the attack being 
>>> discussed,  though it may stop other sorts of attacks if the RS can tell if 
>>> a AT was issued for it or another RS.
>>> 
>>> In PoP having the AS check that you are sending the AT to the correct RS is 
>>> less important as the AT if stolen can't be used to replay against the real 
>>> AS.
>>> 
>>> Though depending on the app the bogus RS feeding the app the wrong info may 
>>> well be a problem as well.
>>> 
>>> John B.
>>> 
>>>> On Mar 16, 2015, at 2:40 PM, Torsten Lodderstedt <[email protected] 
>>>> <mailto:[email protected]>> wrote:
>>>> 
>>> 
>>> I don't think putting an aud into an AT will help to prevent counterfeit 
>>> RSs (as long as the aud is nit directly derived from the original URL used 
>>> by the client to invoke the counterfeit RS. as long as the aud is a 
>>> symbolic name of any kind, the counterfeit RS will accept ATs for the 
>>> legitimate RS and just (ab)use it.
>>> 
>>> POP on the contrary helps since the counterfeit RS, in order to send a 
>>> message to the legitimate RS, needs to produce a new digitally signed 
>>> message using the correct secret, which it doesn't know.
>>> 
>>> kind regards,
>>> Torsten.
>>> 
>>> 
>>> 
>>> Am 16.03.2015 um 17:40 schrieb Dixie Baker <[email protected] 
>>> <mailto:[email protected]>>:
>>> 
>>> 
>>> Using the "aud" parameter makes sense to me.  Good suggestion.
>>> 
>>> Authenticating the client to the RS would not address the counterfeit RS 
>>> threat. 
>>> 
>>> -Dixie
>>> 
>>>  
>>> Dixie B. Baker, Ph.D.
>>> Senior Partner
>>> Martin, Blanck and Associates
>>> Office (Redondo Beach, CA):  310-791-9671
>>> Mobile:  310-279-2579
>>> 
>>> On Mar 16, 2015, at 6:43 AM, Brian Campbell <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>> 
>>>> We've used "aud" (optionally) with OAuth 2 and bearer tokens to help 
>>>> identify the RS to whom the AT should be issued. It is useful but it's 
>>>> mostly about getting format/content/etc of the AT correct for the RS 
>>>> rather than it is about preventing possible AT leaks.
>>>> 
>>>> I do think an "aud(iance)" parameter at both token and authorization 
>>>> endpoints would have utility beyond the POP work. So defining it 
>>>> independently might make sense. 
>>>> 
>>>> On Sun, Mar 15, 2015 at 11:34 AM, John Bradley <[email protected] 
>>>> <mailto:[email protected]>> wrote:
>>>> In POP key distribution we do introduce a "audiance" parameter to the 
>>>> token_endpoint. 
>>>> https://tools.ietf.org/html/draft-ietf-oauth-pop-key-distribution-01#section-3.1
>>>>  
>>>> <https://tools.ietf.org/html/draft-ietf-oauth-pop-key-distribution-01#section-3.1>
>>>> 
>>>> It would be possible to have a small spec to define using "aud" with 
>>>> bearer tokens, however that would be undefined behaviour at this point.
>>>> 
>>>> I don't know of any clients that would try to access a RS server and then 
>>>> besed on the error response try and get a access token from the AS 
>>>> specified in the error.
>>>> 
>>>> In POP we are trying to both protect agains that attack and more common 
>>>> ones like doing a MiM to intercept the AT or the RS being hacked and 
>>>> leaking the token.
>>>> 
>>>> Using "aud" with bearer tokens would be useful, but probably won't stop 
>>>> the majority of possible AT leaks.
>>>> 
>>>> John B.
>>>> 
>>>> 
>>>>> On Mar 15, 2015, at 2:18 PM, Torsten Lodderstedt <[email protected] 
>>>>> <mailto:[email protected]>> wrote:
>>>>> 
>>>>> Hi Josh,
>>>>> 
>>>>> I'm not aware of a common practice to use such a parameter. The WG is 
>>>>> instead heading towards authenticated requests to the resource server 
>>>>> (see https://tools.ietf.org/html/rfc6819#section-5.4.2 
>>>>> <https://tools.ietf.org/html/rfc6819#section-5.4.2>). 
>>>>> 
>>>>> Please take a look onto 
>>>>> http://tools.ietf.org/html/draft-ietf-oauth-pop-architecture 
>>>>> <http://tools.ietf.org/html/draft-ietf-oauth-pop-architecture> and 
>>>>> further drafts on this topic.
>>>>> 
>>>>> kind regards,
>>>>> Torsten.
>>>>> 
>>>>> Am 03.03.2015 um 18:27 schrieb Josh Mandel:
>>>>>> Hi All,
>>>>>> 
>>>>>> In section 4.6.4 ("Threat: Access Token Phishing by Counterfeit Resource 
>>>>>> Server"), RFC6819 describes a threat where a counterfeit resource server 
>>>>>> tricks a client into obtaining and sharing an access token from a 
>>>>>> legitimate authorization server. One of the proposed mitigations 
>>>>>> involves: "telling the authorization server about the resource server 
>>>>>> endpoint URL in the authorization process."
>>>>>> 
>>>>>> In other words, this mitigation would ask the client to pass an 
>>>>>> additional parameter when redirecting to the Authorization server's 
>>>>>> "authorize" URL, effectively something like:
>>>>>> 
>>>>>> https://auth-server/authorize <https://auth-server/authorize>?
>>>>>> response_type=code&
>>>>>> client_id=123&
>>>>>> state=456&
>>>>>> scope=read-all&
>>>>>> redirect_uri=https://app-server/after-auth&; 
>>>>>> <https://app-server/after-auth&;>
>>>>>> resource_server_that_told_me_to_authorize_here=https://attacker.com 
>>>>>> <https://attacker.com/>
>>>>>> 
>>>>>> (And if the authorization server saw a value it didn't like in the final 
>>>>>> parameter, it would reject the request.)
>>>>>> 
>>>>>> This is obviously not appropriate in every authorization scenario, but 
>>>>>> it is useful anytime there's a discovery process by which apps learn 
>>>>>> about authorization servers from resource servers. Since it's something 
>>>>>> of a common need, I wanted to see if there was any common practice in 
>>>>>> how to name this parameter, or whether it's worth registering a standard 
>>>>>> extension at 
>>>>>> http://www.iana.org/assignments/oauth-parameters/oauth-parameters.xhtml 
>>>>>> <http://www.iana.org/assignments/oauth-parameters/oauth-parameters.xhtml>
>>>>>>  . (I don't see one there now -- possibly I'm just missing it.)
>>>>>> 
>>>>>> If so, what should it be called? The name I used in the example above is 
>>>>>> a bit verbose :-)
>>>>>> 
>>>>>> Best,
>>>>>> 
>>>>>>   Josh
>>>>>> 
>>>>>> 
>>>>>> _______________________________________________
>>>>>> OAuth mailing list
>>>>>> [email protected] <mailto:[email protected]>
>>>>>> https://www.ietf.org/mailman/listinfo/oauth 
>>>>>> <https://www.ietf.org/mailman/listinfo/oauth>
>>>>> 
>>>>> _______________________________________________
>>>>> OAuth mailing list
>>>>> [email protected] <mailto:[email protected]>
>>>>> https://www.ietf.org/mailman/listinfo/oauth 
>>>>> <https://www.ietf.org/mailman/listinfo/oauth>
>>>> 
>>>> 
>>>> _______________________________________________
>>>> OAuth mailing list
>>>> [email protected] <mailto:[email protected]>
>>>> https://www.ietf.org/mailman/listinfo/oauth 
>>>> <https://www.ietf.org/mailman/listinfo/oauth>
>>>> 
>>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> OAuth mailing list
>>> [email protected] <mailto:[email protected]>
>>> 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
[email protected]
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to