Hi,

Sent from my iPhone

> On Nov 25, 2015, at 3:20 PM, John Bradley <ve7...@ve7jtb.com> wrote:
> 
> Tokens are signed or the information is otherwise integrity protected between 
> the AS and the RS.  
> 
> I suspect Kathleen is concerned about the key getting modified in transit.   
> That needs to be protected against, but there is more than one way to do that.

Phil is correct.  I was looking for consistency between the sections since they 
related to each other.  If there is a security risk or consideration, that 
needs to be explicitly called out as a concern such as a key being modified in 
transit.  If there are options to protect against that, those would ideally be 
required or would have warnings.
> 
> So sending the public key in a unsigned JWT access token would be immensely 
> stupid,  not just for PoP but for scopes and everything else.

Good, easy to require then.

Thanks,
Kathleen 
> 
> In OAuth 2 all tokens need to be integrity protected between the AS and RS.  
> That can be via signature,  by having a reference with sufficient entropy and 
> secure introspection or database lookup.
> 
> I think that is a OAuth 2 security consideration.   We are adding a 
> additional confirmation claim to the existing information that needs to be 
> protected the same as the rest.
> 
> John B.
> 
> 
>> On Nov 25, 2015, at 4:38 PM, Phil Hunt <phil.h...@oracle.com> wrote:
>> 
>> <editors hat>
>> If there is agreement that tokens are opaque then the requirement that 
>> tokens be signed must be removed from the threat mitigation requirements. 
>> 
>> And the paragraph in sec 5 that brian was concerned about be restored. 
>> 
>> Phil
>> 
>>> On Nov 25, 2015, at 11:24, Justin Richer <jric...@mit.edu> wrote:
>>> 
>>> It is still end to end authentication with opaque tokens — since all OAuth 
>>> tokens, including PoP tokens, have always been intended to be opaque to the 
>>> client. That hasn’t changed and that isn’t the intent of this document. If 
>>> that’s how people are reading it then we need to pull it back and rewrite 
>>> it so that’s not the case.
>>> 
>>> The client gets a token that has two parts: the token and the key. The 
>>> token is analogous to the access_token we have today and would come out of 
>>> the server in the same field. The key is handed to the client alongside the 
>>> token or registered by the client during the token request. Either way 
>>> there’s an association between the two but it’s not the same association as 
>>> a public/private keypair. 
>>> 
>>> It’s possible to sign the token itself, but the client doesn’t care. It 
>>> sends the token and signs the HTTP request to the RS whether the token is 
>>> signed, unsigned, hex blob, encrypted, or anything else. The same series of 
>>> options are available as with bearer tokens. PoP tokens have never, ever 
>>> been intended to be anything but opaque to the client.
>>> 
>>> The token can’t be opaque to the RS, which has to figure out what key to 
>>> use to check the message signature. But we’ve got options there, like the 
>>> embedded key in a JWT from Mike’s draft, or doing introspection to get the 
>>> key (from an extension that hasn’t been written yet), or simply looking it 
>>> up in the same database because the RS and the AS are in the same box. Does 
>>> this structure/service/database choice sound familiar? It should, it’s the 
>>> same as bearer tokens. This is also how the RS gets information like which 
>>> scopes are associated with the token, if it’s expired, and all that. 
>>> 
>>> 
>>> 
>>> 
>>> So here’s how I see it going on the wire:
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> (I just wrote this up so there are probably holes. Here’s the source if 
>>> anyone wants to tweak it: 
>>> http://www.websequencediagrams.com/?lz=cGFydGljaXBhbnQgQ2xpZW50IGFzIEMKAAwMUmVzb3VyY2UgT3duZXIgYXMgUk8AFA1BdXRob3JpemF0aW9uIFNlcnYAIQZBUwA7DVByb3RlY3RlZABICmFzIFJTCgoKClJPLS0-QzogR28gZ2V0IG15IHIAbwcKQy0tPlJPOiBSZWRpcmVjdCB0byBBUy9BRQAvBkFTOiBMb2cgaW4sIGEAgQIHZSBjAIFHBQpBUwAqEwAVBwBrCEhhbmQAKQcAPAUgZ3JhbnQKCmFsdCBzAIFGBnN1cHBsaWVkIGtleQpDAG4GVG9rZW4gcmVxdWVzdCAoADAFKQpBUwCBDAZnZW5lcmF0ZSB0ACIFYW4ANwUva2V5cGFpcgAiBUMAPAgmIEsAEAtlbHMAgTcIAE8pICYga2V5AGYYLCBhc3NvY2lhdGUgd2l0aACBQQUAcBIKZW5kCgpDLT5SUzogUgCBUQdpbmNsdWRpbmcAgT4Lc2lnbmVkAEEKAIIkBnRydWN0dXJlZACBbQYKUlMARAZjaGVjawCCAAdzaWduYXR1cmUgLyBkZWNyeXB0AB8PUGFycwCCLgcAOQlVbnBhY2sAgncFAIIYBWludHJvc3BlY3RpbwBiBkFTOiBzZW4AdAcgKG5vdABiCikgdG8AJQ9BAIEVBwAvBWtleSAocHVibGljIG9yIHNoYXJlZCkAgwIGZGF0YWJhc2UAgUUJbG9vayB1cABhCGxvY2FsLwAtBiBEQikAHQthAIQoBgCCUAUAgX4OAIQsCACCBAp1c2luZwCEWAUAGw9pZ2h0cwCDNQoAgm4HAIJbBgCCXQVDOiByZXR1cm4AhicJ&s=modern-blue
>>>  )
>>> 
>>> The client is oblivious to the token just like always. This is intentional. 
>>> The RS has the same options to figure out how to process the token.
>>> 
>>>  — Justin
>>> 
>>>> On Nov 25, 2015, at 2:03 PM, Phil Hunt <phil.h...@oracle.com> wrote:
>>>> 
>>>> Folks, 
>>>> 
>>>> <editor hat>
>>>> I did not want to go here either. :-)
>>>> 
>>>> I don’t read sec 6 as examples.  I believe this may stem from the 
>>>> pop-architecture documents having a dual role as both “architecture” and 
>>>> “use-case”.  Maybe we should clarify the purpose of the document?
>>>> 
>>>> I believe section 6 is talking about threat mitigation assumptions based 
>>>> on the examples that need to be implemented.  I am assuming these are 
>>>> requirements that the other specifications SHOULD implement.
>>>> 
>>>> <personal hat>
>>>> I do not believe we have discussed Opaque PoP tokens and any inherent 
>>>> risks because the client is not or is unable to validate the authenticity 
>>>> of the token.  Does this introduce the possibility of a MITM attack where 
>>>> a client can be convinced to sign requests for an attacker?
>>>> 
>>>> If we want to include opaque PoP, I think we need to take a pause and 
>>>> consider / discuss any threats here.
>>>> 
>>>> I find the desire for opaque PoP tokens to be a bit contradictory. If 
>>>> we’re saying we don’t want to trust TLS alone (e.g. because of 
>>>> load-balancer termination), why would we then say, but we are perfectly 
>>>> willing to accept it worked for the OAuth AS exchanges?  Maybe I was very 
>>>> wrong here, but my assumption all along is that for PoP we’re talking 
>>>> about end-to-end authentication of all parties except in the case of 3.3 
>>>> where we simply want to protect an access token over a non-TLS HTTP 
>>>> connection.
>>>> 
>>>> 
>>>> Phil
>>>> 
>>>> @independentid
>>>> www.independentid.com
>>>> phil.h...@oracle.com
>>>> 
>>>>> On Nov 25, 2015, at 10:48 AM, Brian Campbell <bcampb...@pingidentity.com> 
>>>>> wrote:
>>>>> 
>>>>> While I can't say I disagree with the deeper existential questions about 
>>>>> the draft that Justin raises, I was trying not to go there and rather 
>>>>> just point out concerns with the newly added text. 
>>>>> 
>>>>> The text Phil cites from Sec 6 doesn't say the client must be able to 
>>>>> parse and verify the token. It's an assumption to simplify the examples 
>>>>> that follow and still the token is opaque to the client. I reread the 
>>>>> whole draft (reluctantly) and there's nothing that says the token has to 
>>>>> be non-opaque to the client. And it does talk about reference style 
>>>>> tokens and encrypted tokens, both of which rely on the opaqueness to the 
>>>>> client. 
>>>>> 
>>>>>> On Wed, Nov 25, 2015 at 11:27 AM, Justin Richer <jric...@mit.edu> wrote:
>>>>>> Right, I read that as text for describing the examples and not for 
>>>>>> describing requirements.
>>>>>> 
>>>>>> The token itself doesn’t have to be signed at all.
>>>>>> 
>>>>>>  — Justin
>>>>>> 
>>>>>>> On Nov 25, 2015, at 1:05 PM, Phil Hunt <phil.h...@oracle.com> wrote:
>>>>>>> 
>>>>>>> Ok. Well this was requested by Kathleen because of this paragraph in 
>>>>>>> Sec 6.…
>>>>>>> 
>>>>>>>    To simplify the subsequent description we assume in the PoP 
>>>>>>> architecture
>>>>>>>    that the token itself is digitally signed by the authorization server
>>>>>>>    and therefore cannot be modified.
>>>>>>> 
>>>>>>> Please 
>>>>>>> Phil
>>>>>>> 
>>>>>>> @independentid
>>>>>>> www.independentid.com
>>>>>>> phil.h...@oracle.com
>>>>>>> 
>>>>>>>> On Nov 25, 2015, at 9:33 AM, Justin Richer <jric...@mit.edu> wrote:
>>>>>>>> 
>>>>>>>> The token doesn’t have to be signed and the client doesn’t have to 
>>>>>>>> verify the signature on the token. That’s not PoP. The request has to 
>>>>>>>> be signed in a way that includes the token. The token itself can still 
>>>>>>>> be opaque. The *key* material can’t be opaque to the client, but the 
>>>>>>>> *token* material still is.
>>>>>>>> 
>>>>>>>> I agree with Brian that this statement is misleading.
>>>>>>>> 
>>>>>>>> The examples use a signed token but that is absolutely not a 
>>>>>>>> requirement. Maybe the examples shouldn’t all use one style.
>>>>>>>> 
>>>>>>>> What’s most difficult about this particular spec is that it’s very 
>>>>>>>> hand-wavy, saying “this is kinda a thing that kinda works like this” 
>>>>>>>> without saying how to actually do it. I’m honestly not sure it’s worth 
>>>>>>>> publishing as an RFC in its own right but I’m not going to stand in 
>>>>>>>> its way.
>>>>>>>> 
>>>>>>>>  — Justin
>>>>>>>> 
>>>>>>>>> On Nov 25, 2015, at 12:14 PM, Brian Campbell 
>>>>>>>>> <bcampb...@pingidentity.com> wrote:
>>>>>>>>> 
>>>>>>>>> Where does it say that? 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>> On Wed, Nov 25, 2015 at 8:44 AM, Phil Hunt <phil.h...@oracle.com> 
>>>>>>>>>> wrote:
>>>>>>>>>> Except that later on we require the token be signed and the client 
>>>>>>>>>> verify that signed token. IOW mutual pop. 
>>>>>>>>>> 
>>>>>>>>>> Phil
>>>>>>>>>> 
>>>>>>>>>>> On Nov 25, 2015, at 07:30, Brian Campbell 
>>>>>>>>>>> <bcampb...@pingidentity.com> wrote:
>>>>>>>>>>> 
>>>>>>>>>>> Looking at the diff I noticed the following new text, which seems 
>>>>>>>>>>> to conflate bearer/PoP and opaqueness to the client. A client 
>>>>>>>>>>> demonstrating proof-of-possession of some key is orthogonal to the 
>>>>>>>>>>> client being able to parse and understand the access token itself. 
>>>>>>>>>>>  
>>>>>>>>>>> "In contrast to bearer tokens [RFC6750] which call for tokens that 
>>>>>>>>>>> are opaque to OAuth 2.0 clients, this specification defines the 
>>>>>>>>>>> requirements for proof-of-possession ("PoP") tokens that may be 
>>>>>>>>>>> parsed and verified by OAuth 2.0 clients and relying parties."
>>>>>>>>>>> 
>>>>>>>>>>>> On Tue, Nov 24, 2015 at 1:07 PM, Phil Hunt <phil.h...@oracle.com> 
>>>>>>>>>>>> wrote:
>>>>>>>>>>>> This draft addresses review comments from Kathleen and Erik raised 
>>>>>>>>>>>> since the last draft.
>>>>>>>>>>>> 
>>>>>>>>>>>> It may not include some of the discussion from yesterday/today.  I 
>>>>>>>>>>>> will add that as the group decides.
>>>>>>>>>>>> 
>>>>>>>>>>>> Cheers,
>>>>>>>>>>>> 
>>>>>>>>>>>> Phil
>>>>>>>>>>>> 
>>>>>>>>>>>> @independentid
>>>>>>>>>>>> www.independentid.com
>>>>>>>>>>>> phil.h...@oracle.com
>>>>>>>>>>>> 
>>>>>>>>>>>> > On Nov 24, 2015, at 12:05 PM, internet-dra...@ietf.org wrote:
>>>>>>>>>>>> >
>>>>>>>>>>>> >
>>>>>>>>>>>> > A New Internet-Draft is available from the on-line 
>>>>>>>>>>>> > Internet-Drafts directories.
>>>>>>>>>>>> > This draft is a work item of the Web Authorization Protocol 
>>>>>>>>>>>> > Working Group of the IETF.
>>>>>>>>>>>> >
>>>>>>>>>>>> >        Title           : OAuth 2.0 Proof-of-Possession (PoP) 
>>>>>>>>>>>> > Security Architecture
>>>>>>>>>>>> >        Authors         : Phil Hunt
>>>>>>>>>>>> >                          Justin Richer
>>>>>>>>>>>> >                          William Mills
>>>>>>>>>>>> >                          Prateek Mishra
>>>>>>>>>>>> >                          Hannes Tschofenig
>>>>>>>>>>>> >       Filename        : draft-ietf-oauth-pop-architecture-06.txt
>>>>>>>>>>>> >       Pages           : 23
>>>>>>>>>>>> >       Date            : 2015-11-24
>>>>>>>>>>>> >
>>>>>>>>>>>> > Abstract:
>>>>>>>>>>>> >   The OAuth 2.0 bearer token specification, as defined in RFC 
>>>>>>>>>>>> > 6750,
>>>>>>>>>>>> >   allows any party in possession of a bearer token (a "bearer") 
>>>>>>>>>>>> > to get
>>>>>>>>>>>> >   access to the associated resources (without demonstrating 
>>>>>>>>>>>> > possession
>>>>>>>>>>>> >   of a cryptographic key).  To prevent misuse, bearer tokens 
>>>>>>>>>>>> > must be
>>>>>>>>>>>> >   protected from disclosure in transit and at rest.
>>>>>>>>>>>> >
>>>>>>>>>>>> >   Some scenarios demand additional security protection whereby a 
>>>>>>>>>>>> > client
>>>>>>>>>>>> >   needs to demonstrate possession of cryptographic keying 
>>>>>>>>>>>> > material when
>>>>>>>>>>>> >   accessing a protected resource.  This document motivates the
>>>>>>>>>>>> >   development of the OAuth 2.0 proof-of-possession security 
>>>>>>>>>>>> > mechanism.
>>>>>>>>>>>> >
>>>>>>>>>>>> >
>>>>>>>>>>>> > The IETF datatracker status page for this draft is:
>>>>>>>>>>>> > https://datatracker.ietf.org/doc/draft-ietf-oauth-pop-architecture/
>>>>>>>>>>>> >
>>>>>>>>>>>> > There's also a htmlized version available at:
>>>>>>>>>>>> > https://tools.ietf.org/html/draft-ietf-oauth-pop-architecture-06
>>>>>>>>>>>> >
>>>>>>>>>>>> > A diff from the previous version is available at:
>>>>>>>>>>>> > https://www.ietf.org/rfcdiff?url2=draft-ietf-oauth-pop-architecture-06
>>>>>>>>>>>> >
>>>>>>>>>>>> >
>>>>>>>>>>>> > Please note that it may take a couple of minutes from the time 
>>>>>>>>>>>> > of submission
>>>>>>>>>>>> > until the htmlized version and diff are available at 
>>>>>>>>>>>> > tools.ietf.org.
>>>>>>>>>>>> >
>>>>>>>>>>>> > Internet-Drafts are also available by anonymous FTP at:
>>>>>>>>>>>> > ftp://ftp.ietf.org/internet-drafts/
>>>>>>>>>>>> >
>>>>>>>>>>>> > _______________________________________________
>>>>>>>>>>>> > 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
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> -- 
>>>>>>>>>>>                             
>>>>>>>>>>> Brian Campbell
>>>>>>>>>>> Distinguished Engineer
>>>>>>>>>>> Ping Identity
>>>>>>>>>>> @   bcampb...@pingidentity.com
>>>>>>>>>>>     +1 720.317.2061
>>>>>>>>>>>     @pingidentity
>>>>>>>>>>> Connect with us!
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>>                 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> -- 
>>>>>>>>>                               
>>>>>>>>> Brian Campbell
>>>>>>>>> Distinguished Engineer
>>>>>>>>> Ping Identity
>>>>>>>>> @     bcampb...@pingidentity.com
>>>>>>>>>       +1 720.317.2061
>>>>>>>>>       @pingidentity
>>>>>>>>> Connect with us!
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>                 
>>>>>>>>> _______________________________________________
>>>>>>>>> OAuth mailing list
>>>>>>>>> OAuth@ietf.org
>>>>>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>>> 
>>>>> 
>>>>> 
>>>>> -- 
>>>>>                           
>>>>> Brian Campbell
>>>>> Distinguished Engineer
>>>>> Ping Identity
>>>>> @ bcampb...@pingidentity.com
>>>>>   +1 720.317.2061
>>>>>   @pingidentity
>>>>> Connect with us!
>>>>> 
>>>>> 
>>>>>                 
>> _______________________________________________
>> 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

Reply via email to